在片段下滑动菜单

时间:2015-11-14 13:37:41

标签: java android android-fragments

目前我正在为我的应用设计用户界面。我想实现滑动菜单和操作栏标签功能。我能够做到这一点,但我遇到了一个小问题 - 滑动菜单应该在片段之上,但在我的情况下它是相反的。

片段

enter image description here

打开菜单(片段叠加层)

enter image description here

以下是我用来制作标签的代码:

List<Fragment> fragList = new ArrayList<Fragment>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_main);
    ActionBar bar = getActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    for (int i=1; i <= 3; i++) {
        Tab tab = bar.newTab();
        tab.setText("Tab " + i);
        tab.setTabListener(this);
        bar.addTab(tab);

    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {

}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    Fragment f = null;
    TabFragment tf = null;

    if (fragList.size() > tab.getPosition())
            fragList.get(tab.getPosition());

    if (f == null) {
        tf = new TabFragment();
        Bundle data = new Bundle();
        data.putInt("idx",  tab.getPosition());
        tf.setArguments(data);
        fragList.add(tf);
    }
    else
        tf = (TabFragment) f;

    ft.replace(android.R.id.content, tf);

}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    if (fragList.size() > tab.getPosition()) {
        ft.remove(fragList.get(tab.getPosition()));
    }

}

滑块参数值:

    mSlidingPanel = (SlidingPaneLayout) findViewById(R.id.SlidingPanel);

    mSlidingPanel.setPanelSlideListener(panelListener);
    mSlidingPanel.setParallaxDistance(200);

    mListView = (ListView) findViewById(R.id.MenuList);

    TitleText = (TextView)findViewById(android.R.id.title);

    ListAdapter listAdapter = new CustomListAdapter(MixingSolutionsTransition.this , R.layout.custom_list , mList);
    mListView.setAdapter(listAdapter);


   getActionBar().setDisplayShowHomeEnabled(true);
   getActionBar().setHomeButtonEnabled(true);
   appImage = (ImageView)findViewById(android.R.id.home);

TabFragment:

public class TabFragment extends Fragment {

private int index;


@Override
public void onCreate(Bundle savedInstanceState) {       
    super.onCreate(savedInstanceState);
    Bundle data = getArguments();
    index = data.getInt("idx");
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.fragment, null);
    TextView tv = (TextView) v.findViewById(R.id.msg);
    tv.setText("Fragment " + (index + 1));

    return v;

    }



}

我在网上找不到任何类似的问题。我该怎么办?

1 个答案:

答案 0 :(得分:0)

在您的代码中,您已将标签创建为ActionBar.NAVIGATION_MODE_TABS  这意味着您希望选项卡成为操作栏的一部分,该操作栏将指示您所在的选项卡,

因此导航抽屉已将自身调整为位于标签下方(现在标签是操作栏的一部分)。

如果将抽屉布局提升到布局的根部,然后导航抽屉将显示在操作栏上,您可以做什么。在这种情况下,您将在操作栏上方显示选项卡和导航抽屉