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}}作为价值。
有什么想法吗?
答案 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());
}
});
如果您有任何疑问,请告诉我。