Android:动态布局更改对话框
问题描述:
我想以编程方式更改对话框的布局:更改根LinearLayout方向。这个LinearLayout根包含两个布局:GT和DI。 如果我使用AlertDialog,它会很好用,但如果我直接使用对话框(使用带有自定义样式的对话框,因为我不需要任何标题或标题空间),则效果不佳。Android:动态布局更改对话框
这里是我的XML布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<LinearLayout
android:id="@+id/GT_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GT"
android:textAppearance="?android:attr/textAppearanceMedium" />
<RadioGroup
android:id="@+id/GT_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/radioButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:height="5dp"
android:text="GT #1" />
<RadioButton
android:id="@+id/radioButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:height="5dp"
android:text="GT #2" />
</RadioGroup>
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/DI_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FF0000"
android:orientation="vertical" >
<TextView
android:id="@+id/textView3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="DI"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbarAlwaysDrawVerticalTrack="true" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RadioGroup
android:id="@+id/DI_group"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RadioButton
android:id="@+id/DI_rdb_1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:checked="true"
android:text="DI #1" />
<RadioButton
android:id="@+id/DI_rdb_2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:checked="true"
android:text="DI #2" />
</RadioGroup>
</LinearLayout>
</ScrollView>
</LinearLayout>
这里是我的代码:
LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rootLayout = inflater.inflate(R.layout.new_game, (ViewGroup) activity.findViewById(R.id.root_container));
if (screenIsLandscape) {
((LinearLayout) rootLayout).setOrientation(LinearLayout.HORIZONTAL);
} else {
((LinearLayout) rootLayout).setOrientation(LinearLayout.VERTICAL);
}
Dialog dlg = new Dialog(activity, R.style.FullHeightDialog);
dlg.requestWindowFeature(Window.FEATURE_NO_TITLE);
dlg.setContentView(R.layout.my_layout);
dlg.show();
我不想用 “布局土地”,以避免重复XML(我的XML是相当大,但在这里简化这篇文章)。 预先感谢您。
答
您从xml文件创建了新的对象“rootLayout”,然后对其进行了更改(rootLayout,而不是xml)。现在这个对象没有与你的文件链接。
你有改变的对象,使用方法:
dlg.setContentView(rootLayout);
+0
猜你是对的,投票支持记录:) – xav 2014-02-27 13:33:48
你试图改变的setContentView()到2之间切换? – 2012-01-15 07:01:10
谢谢。对不起,但我不明白:什么和什么之间切换?在setContentView()中,我当前使用'R.layout.my_layout',这是我唯一的XML资源布局文件的名称。如果你的意思是在GT和DI之间切换,这不是我要找的:我想将它们从水平布局到垂直布局,反之亦然 – xav 2012-01-15 10:03:30