我想获得图片上显示的布局结构。 无论我做了什么,它总是让TabHost在线性上传播到全屏。
此布局结构已多次修改。我尝试了所有的重量和重力和match_parent,填充父..所有这些都使TabHost在顶部和底部线性不可见。所以如果你看到一些疯狂的标签,不要感到惊讶:)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_weight="0"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<TabHost
android:id="@+id/tabHost"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</TabWidget>
</TabHost>
<LinearLayout
android:layout_weight="1"
android:background="@color/white"
android:layout_height="60dp"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
android:layout_alignParentBottom="true"
android:layout_width="fill_parent">
<Button
android:layout_width="100dp"
android:layout_height="fill_parent"
android:text="@string/finish_test"
android:id="@+id/finishTest"
android:background="@drawable/blueback"
android:layout_alignParentRight="true"
android:layout_gravity="right"
android:nestedScrollingEnabled="false"
android:onClick="onFinishClick" />
</LinearLayout>
</RelativeLayout>
但是我需要将屏幕分成两个面板。
面板1 - TabHost的完整区域
面板2 - 固定高度,仅适用于线性。
请帮助。
P.S。 Button被称为Lineat的一部分。请不要理会。 p>
也许提及我从代码中填充的选项卡面板也很重要。 每个标签都是一个活动布局。
我这样做:
// on eCreate..
TabHost mTabHost = (TabHost) findViewById(R.id.tabHost);
mTabHost.setup(getLocalActivityManager());
try {
mTabHost.addTab(mTabHost.newTabSpec("tab0").setIndicator("title1", null).setContent(new Intent(this, HelloScreen.class)));
mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("title2", null).setContent(new Intent(this, BeginTest.class)));
mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("title3", null).setContent(new Intent(this, Second.class)));
} catch (Exception e) {
throw e;
}
然后我隐藏TabWidget ..并且这些标签(内部活动)总是占据全屏..
也许我错了,但对我而言,Activity就像Windows中的窗口......或者Winform.NET - 用户控件或WinForm ......
在.NET中,这种结构非常完美。我不确定Android如何管理活动..
答案 0 :(得分:0)
答案隐藏在正确的布局参数和正确的布局类型中。
你可以使用片段或活动(它们已被弃用,但我发现它们更容易实现,特别是如果你需要提供任何视图(按钮,画布,文本等等)..只需做好每一件事。槽管&#34;就像管理活动时一样。 添加标签 - 使用上面的代码..
但是层数......它们应该如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<TabHost
android:id="@+id/tabHost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</TabWidget>
</RelativeLayout>
</TabHost>
<LinearLayout
android:orientation="horizontal"
android:layout_weight="1"
android:background="@color/white"
android:layout_height="60dp"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
android:layout_alignParentBottom="true"
android:layout_width="fill_parent">
<Button
android:layout_width="100dp"
android:layout_height="fill_parent"
android:text="@string/your_text"
android:id="@+id/yourId"
android:layout_alignParentRight="true"
android:layout_gravity="right"
android:nestedScrollingEnabled="false"
android:onClick="onYourClick" />
</LinearLayout>
</LinearLayout>
隐藏TabHost TabWidget使用:
mTabHost.getTabWidget().getChildAt(0).setVisibility(View.GONE);
在您的MainActivity eCreate上..
然后..只需使用任何方法..按钮或代码显示所需的Tab面板,使用setCurrentTab(# of you Tab);
非常顺利的解决方案......