我將一個LinearLayout定義爲activity_main.xml中的根元素。我試圖在此垂直LinearLayout中添加Button,根據Google的API,我試圖在ViewGroup中添加它之前調用setWidth(20)按鈕,但Button佔用了寬度'match_parent'而不是20dp。如果ViewGroup的寬度是xml中的'match_parent'/'fill_parent',Button的set set()不起作用?
<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);
CASE 2:設置layout_width的LinearLayout的爲 '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),按鈕獲取的寬度爲 '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);
QUES:所以很清楚的情況下,2,在使用的LayoutParams是沒有必要的,如果我想明確地使用setWidth()method.Then在案例4:即LinearLayout中的寬度設定作爲'match_parent'和button.setWidth(20)也被調用。 但是,爲什麼Button仍然沒有明確給出寬度值,再次輸出是完全相同的情況1.
在此先感謝。
但是setWidth()的API表示「使TextView正好有很多像素寬度,你可以通過在LayoutParams中指定這個數字來做同樣的事情。」 我認爲這意味着,它沒有必要我必須使用LayoutParams方法,通過調用setWidth()我試圖定義相同。 – itsMohitGoel