我使用这样的布局main.xml
启动我的应用程序:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/relative" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageButton android:id="@+id/applogo" ... android:src="@drawable/app_logo"/>
<TabHost android:id="@android:id/tabhost" ... android:layout_below="@+id/applogo">
<LinearLayout ...>
<TabWidget.../>
<FrameLayout android:id="@android:id/tabcontent"...>
</FrameLayout>
</LinearLayout>
</TabHost>
</RelativeLayout>
设置菜单中的用户可以选择另一个较小的布局(tiny.xml
),其布局如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/relative" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<TabHost android:id="@android:id/tabhost" ...>
<LinearLayout ...>
<TabWidget.../>
<FrameLayout android:id="@android:id/tabcontent"...>
</FrameLayout>
</LinearLayout>
</TabHost>
</RelativeLayout>
mainActivity
扩展TabActivity
和onCreate
方法:
...
if (isTiny())
setContentView(R.layout.tiny);
else
setContentView(R.layout.main);
mTabHost = getTabHost();
TabSpec newsTab = mTabHost.newTabSpec(NewsActivity.static_getTabActivityTag());
newsIntent = new Intent(this, NewsActivity.class);
newsTab.setContent(newsIntent);
TextView textView = new TextView(this);
textView.setText(getResources().getString(NewsActivity.static_getIndicatorStringID());
textView.setTextSize(size);
textView.setTextColor(color);
textView.setBackgroundDrawable(background);
tab.setIndicator(textView);
mTabHost.addTab(newsTab);
想法是在mainActivity#onRestart
中编写一些代码,这样如果用户通过设置面板更改了布局,则为他加载新的布局。怎么实现呢?我尝试使用setContentView
,但它只是崩溃并再次为标签创建视图,但它只是不起作用,视图是空白的。
更新:添加了如何在活动中创建标签。
更新可以多次执行setContentView。我的问题与意图中的活动有关。
答案 0 :(得分:3)
您可以随时调用setContentView,而不必在onCreate中。我会使用SharedPreferences
来存储用户想要的内容视图。希望这会有所帮助。
答案 1 :(得分:0)
对于片段布局,我这样做:
cat
这样你就知道了。