安卓垂直动作栏选项卡

4

我已经成功地在Android 4.1中使用FragmentActivity、Fragments和ActionBar实现了没有TabActivity的选项卡。每当我点击任何选项卡时,它会加载每个片段。但现在我的问题是,我需要在垂直选项卡中实现相同的结构。

 public class MainActivity extends FragmentActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


      ActionBar actionbar = getActionBar();
      actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

      View view1 = LayoutInflater.from(this).inflate(R.layout.action_bar_layout, null);
      ((TextView) view1.findViewById(R.id.textView)).setText("Tab1");

      ActionBar.Tab tab1 = actionbar.newTab().setCustomView(view1);

      View view2 = LayoutInflater.from(this).inflate(R.layout.action_bar_layout, null);
      ((TextView) view2.findViewById(R.id.textView)).setText("Tab2");

      ActionBar.Tab tab2 = actionbar.newTab().setCustomView(view2);

      View view3 = LayoutInflater.from(this).inflate(R.layout.action_bar_layout, null);
      ((TextView) view3.findViewById(R.id.textView)).setText("Tab3");

      ActionBar.Tab tab3 = actionbar.newTab().setCustomView(view3);

      View view4 = LayoutInflater.from(this).inflate(R.layout.action_bar_layout, null);
      ((TextView) view4.findViewById(R.id.textView)).setText("Tab4");

      ActionBar.Tab tab4 = actionbar.newTab().setCustomView(view4);

      View view5 = LayoutInflater.from(this).inflate(R.layout.action_bar_layout, null);
      ((TextView) view5.findViewById(R.id.textView)).setText("Tab5");

      ActionBar.Tab tab5 = actionbar.newTab().setCustomView(view5);

      Fragment fragment1 = new Fragment1();
      Fragment fragment2 = new Fragment2();
      Fragment fragment3 = new Fragment3();
      Fragment fragment4 = new Fragment4();
      Fragment fragment5 = new Fragment5();

      tab1.setTabListener(new MyTabsListener(fragment1, view1));
      tab2.setTabListener(new MyTabsListener(fragment2, view2));
      tab3.setTabListener(new MyTabsListener(fragment3, view3));
      tab4.setTabListener(new MyTabsListener(fragment4, view4));
      tab5.setTabListener(new MyTabsListener(fragment5, view5));

      actionbar.addTab(tab1);
      actionbar.addTab(tab2);
      actionbar.addTab(tab3);
      actionbar.addTab(tab4);
      actionbar.addTab(tab5);

   }

class MyTabsListener implements TabListener {
    public Fragment fragment;
    public View view;

    public MyTabsListener(Fragment fragment, View view) {
        this.fragment = fragment;
        this.view = view;
    }

    @Override
    public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {
        System.out.println("onTabReselected");

    }

    @Override
    public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {

        ((RelativeLayout) view.findViewById(R.id.rootElement)).setBackgroundColor(Color.WHITE);
        ((TextView) view.findViewById(R.id.textView)).setTextColor(Color.BLACK);

        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.mainFragement, fragment);
        fragmentTransaction.commit();

    }

    @Override
    public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {
        ((RelativeLayout) view.findViewById(R.id.rootElement)).setBackgroundColor(Color.BLACK);
        ((TextView)view.findViewById(R.id.textView)).setTextColor(Color.WHITE);
    }
}
  }

我的 activity_main.xml 文件如下:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
android:layout_gravity="center" 
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
android:orientation="vertical" 
xmlns:android="http://schemas.android.com/apk/res/android"
>
<LinearLayout 
    android:id="@+id/fragment_container" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent"
    >
    <FrameLayout
    android:id="@+id/mainFragement"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</FrameLayout>
</LinearLayout>

1个回答

3

动作栏不支持我认为的“垂直选项卡式结构”。实际上,在Android中通常不会看到“垂直选项卡式结构”。你可能会看到的最接近的东西是在平板应用程序中,横向方向上左侧有一个ListView控制右侧UI的内容(所谓的“主从模式”)。


请问您有没有任何链接或想法可以获取主从模式?当我在主列表中点击任何项目时,它应该在详细信息部分加载一个片段。 - Neela
1
@SakthiSai:我不确定你具体在寻找什么。http://developer.android.com/design/patterns/multi-pane-layouts.html http://developer.android.com/design/patterns/swipe-views.html - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接