题
我想要做的就是创建这样一个布局:
+--------+
Search |EditText| [Button]
+--------+
+---------+
|Tab 1 |---------+
| |Tab 2 |
|---------+---------+-----------------+
| ListView Item 1 |
| ListView Item 2 |
| ListView Item 3 |
| ListView Item 4 |
| ListView Item 5 |
| ListView Item 6 |
| ListView Item 7 |
| ListView Item 8 |
| ListView Item 9 |
| ListView Item 10 |
+-------------------------------------+
所以这是一个TextView说 '搜索',一个EditText和一个按钮。
然后在它下面的标签 - 标签1具有一个ListView,选项卡2其他一些东西。我可以得到一个简单的TabHost设置两个选项卡工作正常,但不能得到上述适当布局。
的问题是,它安装并运行良好 - 只是布局是错误的。我已经试过加权的观点等,但我不能得到的东西到位置按照上面的ASCII图。
我想创建在Eclipse设计师的UI,并从检查XML,除了设计师不TabHost工作。而DroidDraw似乎并不知道TabHost。
这里的XML:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TabHost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="5dp">
<TextView android:id="@+id/SearchTextView"
android:text="Search"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="10">
</TextView>
<EditText
android:text="@+id/SearchEditText"
android:id="@+id/SearchEditText"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:singleLine="true"
android:layout_weight="10">
</EditText>
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="10"/>
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="70">
<LinearLayout android:id="@+id/Tab1ListLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</LinearLayout>
<Button android:id="@+id/tab2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Tab 2 button"/>
</FrameLayout>
</LinearLayout>
</TabHost>
...和这里的活动:
public class tabtest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabs = (TabHost)findViewById(R.id.TabHost);
tabs.setup();
TabHost.TabSpec spec = tabs.newTabSpec("tag1");
spec.setContent(R.id.Tab1ListLayout);
spec.setIndicator("Tab 1");
tabs.addTab(spec);
spec=tabs.newTabSpec("tag2");
spec.setContent(R.id.tab2);
spec.setIndicator("Tab 2");
tabs.addTab(spec);
EditText et = (EditText)findViewById(R.id.SearchEditText);
et.setText("Some text.");
}
解决方案
请参阅布局花样了解“重量”线性布局特技。可能的解决方案:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal">
<TextView android:id="@+id/SearchTextView"
android:text="Search"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<EditText
android:text="@+id/SearchEditText"
android:id="@+id/SearchEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true">
</EditText>
</LinearLayout>
<TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" />
<FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1"/>
<LinearLayout android:id="@+id/Tab1ListLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</LinearLayout>
<Button android:id="@+id/tab2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tab 2 button"/>
</LinearLayout>
</TabHost>
不隶属于 StackOverflow