私のアプリには、ユーザーが企業に関する情報を追加できるフォームがあります。4 つのカテゴリに TabHost コンポーネントを使用しました。XML では、アプリに 4 つのフォームのレイアウトがあります (xml コードは以下にあります)。タブ付きのマイ アクティビティは、Android Gingerbread を搭載したさまざまなデバイスで動作しますが、Android Ice Cream Sandwich を搭載したデバイスでは動作しません。たとえば、Android 2.3.3 の tabAddress で EditText 番号 4 を選択したい場合、それらのフィールドを選択して、それらに何かを書き込むことができます。Android 4.1.2 または 4.2 で同じことをしたい場合、このバージョンの Android ではそのメカニズムが機能しないため、そのフィールドを選択できません。最後のタブでは、Gingerbread と ICS の両方ですべての EditText を選択できます。ICS のレイヤーのように機能し、最後のタブ (メニュー) が他のタブを覆っていると思います。以下は、私の xml コードと Java コードのフラグメントです。どうすればその問題を解決できますか? Andorid 4.3.3 での作業のように、ICS で作業したいと考えています。
XML コード: `
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:tabStripEnabled="false" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/tabAddress"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" >
... other components (e.g. EditText)
<EditText
android:id="@+id/etName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:ems="10" />
... other components (e.g. EditText)
</LinearLayout>
</ScrollView>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/tabDetails"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" >
... other components (e.g. EditText)
<EditText
android:id="@+id/etPhone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:ems="10" />
... other components (e.g. EditText)
</LinearLayout>
</ScrollView>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/tabHours"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" >
... other components (e.g. EditText)
<EditText
android:id="@+id/etMonday"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:ems="10" />
... other components (e.g. EditText)
</LinearLayout>
</ScrollView>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/tabMenu"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" >
... other components (e.g. EditText)
<EditText
android:id="@+id/etProduct"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:ems="10" />
... other components (e.g. EditText)
</LinearLayout>
</ScrollView>
</FrameLayout>
</LinearLayout>
</TabHost>`
Java コード:
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
...
tabHost = (TabHost) findViewById(R.id.tabhost);
tabHost.setup();
addTab("Adres", R.id.tabAddress, R.drawable.home);
addTab("Szczegóły", R.id.tabDetails, R.drawable.details);
addTab("Godz.", R.id.tabHours, R.drawable.clock);
addTab("Menu", R.id.tabMenu, R.drawable.menu);
setTabColor(tabHost);
...
}
public void addTab(String tabSpecTag, int viewId, int drawableId){
tabSpecs = tabHost.newTabSpec(tabSpecTag);
tabSpecs.setIndicator(tabSpecTag, getResources().getDrawable(drawableId));
tabSpecs.setContent(viewId);
tabHost.addTab(tabSpecs);
}