私がやろうとしているのは、次のようなレイアウトを作成することです。
+--------+
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には他のものがあります。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.");
}