我要做的是创建以下结构的布局:
-------------------------
| Constant |
| LinearLayout |
| |
-------------------------
| | |
| Tab1 | Tab2 |
| | |
-------------------------
| |
| Fragment's layout |
| which switches |
| on tab click |
| |
| |
| |
-------------------------
然而,正如许多其他SO问题所提到的(据我所知,所有这些问题都没有答案),片段与标签重叠,而不是留在它们下面。我已经找到了一个答案并尝试了几种方法来解决这个问题,但没有任何方法适用于所有布局分辨率(即:我不想为标签设置一定的高度)。
所以我想知道,FragmentTabHost
能够为我提供所需布局的最合适的替代方案是什么?
答案 0 :(得分:0)
如果您希望绘图中的toplayout成为Appname或其他内容的位置或菜单,则已经有Actionbar来执行此操作。你不需要一个Linearlayout。
你真的想在那里有一个不属于Actionbar的自己的布局,无论出于什么原因,我都不确定是否有类似的东西能够完美无缺。也许更好的只是用按钮构建一个自己的Tabnavigation类型?
无论如何,在这里没有片段内部片段效果的工作布局是:
Fragment.xml&片段2&片段3(换成正确的名字)
public class FragmentTab1 extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View view = inflater.inflate(R.layout.win_lang_dailyuse, container, false);
return view;
}
}
Tablistener.xml
public class MyTabListener implements ActionBar.TabListener {
Fragment fragment;
public MyTabListener(Fragment fragment) {
this.fragment = fragment;
}
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
ft.replace(R.id.fragment_container, fragment);
}
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
ft.remove(fragment);
}
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
// nothing done here
}
}
MainActivity.xml
public class MainActivity extends Activity {
ActionBar.Tab tab1, tab2, tab3;
Fragment fragmentTab1 = new FragmentTab1();
Fragment fragmentTab2 = new FragmentTab2();
Fragment fragmentTab3 = new FragmentTab3();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab_test);
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
tab1 = actionBar.newTab().setText("Home");
tab2 = actionBar.newTab().setText("Calculator");
tab3 = actionBar.newTab().setText("Notebook");
tab1.setTabListener(new MyTabListener(fragmentTab1));
tab2.setTabListener(new MyTabListener(fragmentTab2));
tab3.setTabListener(new MyTabListener(fragmentTab3));
actionBar.addTab(tab1);
actionBar.addTab(tab2);
actionBar.addTab(tab3);
}
现在使用您想要的任何布局填充3个片段XML文件。