根据宽度更改按钮高度[Android]

时间:2015-01-22 12:17:54

标签: android xml button

Android Studio中的按钮出现问题。 我希望某些按钮是方形的,同时根据non-fix width得到weight。我的意思是:

android:layout_width="0dip"
android:layout_weight="0.5"
android:layout_height="wrap_content"

我在这里寻找答案,但没有一个能为我效劳。我知道无法通过XML执行此操作,因此我已尝试使用btn.getWidth()btn.getLayoutParams().width ...在我的Java代码中,但所有这些return 0 {{} 1}}作为价值。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

如果你想按代码设置按钮大小,你应该这样做(在你的类中扩展Button):

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    int width = getMeasuredWidth();
    int height = width;
    heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);

    super.onMeasure(widthMeasureSpec, heightMeasureSpec);}

    @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
    int width = getMeasuredWidth();
    int height = width;
    setMeasuredDimension(width, height);
}

但有更好的方法:为所有dpis创建方形png并将其设置为按钮的背景。

答案 1 :(得分:1)

使用以下监听器:

ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();
if (viewTreeObserver.isAlive()) {
viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
       view.getViewTreeObserver().removeOnGlobalLayoutListener(this);

       //Here you can get and set the TextViews size.
    }
 });
}

你得到的是0,因为在你查看的时候没有测量过。为了确保您能够获得实际视图,您可以使用此侦听器。

答案 2 :(得分:0)

我已经在我的最后测试了这段代码。就在onCreate()结束之前。只需写下这些行。

Button button= (Button ) findViewById(R.id.button);
button.post(new Runnable() {

            @Override
            public void run() {

                Log.e("",""+button.getHeight()+" "+button.getWidth());
            }
        });

如果您有任何疑问,请告诉我。