我试图在运行时通过代码更改按钮的高度和宽度。
我的布局xml
<Button
android:id="@+id/button1"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentRight="true"
android:layout_below="@+id/button2"
android:background="@drawable/button1_background"
/>
主要活动代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//some other code
int displaywidth= getResources().getDisplayMetrics().widthPixels;
Button f_button = (Button) findViewById(R.id.button1);
Log.d("F_button width before is",""+ f_button.getWidth());
f_button.setWidth(displaywidth/2);
Log.d("F_button width after is",""+ f_button.getWidth());
//some other code
}
Logcat将宽度之前和之前的F_button显示为“0”。
我做错了什么。
谢谢!
答案 0 :(得分:1)
我认为它可能对你有帮助..
Button btn = (Button)findViewById(R.id.btn1);
android.widget.LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,60); // 60 is height you can set it as u need
btn.setLayoutParams(lp);
答案 1 :(得分:0)
在java(Activity)
中使用以下代码 f_button.setLayoutParams (new LayoutParams(50, LayoutParams.WRAP_CONTENT));
答案 2 :(得分:0)
你应该使用
int displaywidth= getResources().getDisplayMetrics().widthPixels;
ViewGroup.LayoutParams buttonlp= (ViewGroup.LayoutParams)f_button.getLayoutParams();
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(displaywidth, buttonlp.height);
buttonlp.setLayoutParams(params);
如果不是LinearLayout
,则应该使用按钮的父级布局而不是LinearLayout
答案 3 :(得分:0)
是的,我尝试解决了很长时间的问题。阿积的解决方案使我成功。 对于Kotlin程序员来说,它看起来像这样:
btn.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 60)