我在Activity_main.xml中将LinearLayout定义为根元素。
案例1:从onCreate()我试图在这个Vertical LinearLayout中添加Button,让我感到困惑的是,根据Google的API,我试图在按钮上调用setWidth(20),然后再将其添加到ViewGroup中,但是Button占用的宽度为'match_parent'而不是20dp。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:orientation="vertical"
android:id="@+id/first_layout">
</LinearLayout>
//Inside onCreate() of activity..
LinearLayout firstLayout = (LinearLayout) findViewById(R.id.first_layout);
Button button = new Button(this);
button.setText(R.string.click_on_me);
button.setWidth(20);
firstLayout.addView(button);
案例2:在将LinearLayout的layout_width设置为'wrap_content'并调用setWidth(20)时,现在考虑了给定的显式宽度值,即20dp。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:orientation="vertical"
android:id="@+id/first_layout">
</LinearLayout>
//Inside onCreate() method
LinearLayout firstLayout = (LinearLayout) findViewById(R.id.first_layout);
Button button = new Button(this);
button.setText(R.string.click_on_me);
button.setWidth(20);//In this case, its working
firstLayout.addView(button);
情况3:最后,删除对setWidth(20)的自定义调用,Button获取宽度为'wrap_content'。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:orientation="vertical"
android:id="@+id/first_layout">
</LinearLayout>
//Inside onCreate() method.
LinearLayout firstLayout = (LinearLayout) findViewById(R.id.first_layout);
Button button = new Button(this);
button.setText(R.string.click_on_me);
firstLayout.addView(button);
问题:从案例2可以明显看出,如果我希望显式使用setWidth()方法,则不必使用LayoutParams。然后在案例4中:即LinearLayout的宽度设置为'match_parent'和button.setWidth(20)为也叫。
但是为什么Button仍不采用显式给定的width值,再次输出与CASE 1完全相同。
提前致谢。
最佳答案
您需要为按钮 View 定义适当的LayoutParams
。然后将其添加到您的firstLayout
中。
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.height = XX;
params.width = XX;
button.setLayoutParams(params);
关于如果ViewGroup的宽度在xml中为 'match_parent'/'fill_parent',则Button的Android-setWidth()无法正常工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32495645/