我的应用程序具有用户可以添加有关其企业的信息的表单。我将TabHost组件用于四个类别。在XML中,我在我的应用程序中有四种表单的布局(下面是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代码片段。我该如何解决这个问题?我希望它在ICS中的工作就像在Andorid 4.3.3上工作一样。
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);
}