【问题标题】:How to create a navigation drawer on a fragment in android如何在android中的片段上创建导航抽屉
【发布时间】:2015-05-19 17:27:48
【问题描述】:

我的设计需要一些建议。我有一个加载多个片段的 Activity 类。其中一个片段具有导航抽屉。当用户单击导航列表中的任何项目时,它会加载其片段并具有返回按钮以返回带有导航抽屉的片段。 如图所示。 A、B、C 是导航抽屉中的项目,它们将替换内容,并有一个后退按钮可以返回带有导航抽屉的片段 D。 我看过多个教程,它们在活动中加载导航抽屉并将导航作为主要内容。我想要的是,如果用户单击顶部的图标,它会显示列表。它可以成为 Fragment D 布局的一部分吗?

有什么建议吗?

【问题讨论】:

    标签: android navigation-drawer


    【解决方案1】:

    您必须创建一个包含导航抽屉的类,然后您可以在任何您想要的地方扩展特定的类。如果您想在片段上使用它,只需使用带有导航抽屉的类扩展包含这些片段的特定活动。

    【讨论】:

    • 那么这个类(导航类)可以是一个片段吗?
    • 它已经在扩展 Activity 类 plus.. 我不希望它在所有片段上。只有一个 Fragment 类。
    【解决方案2】:

    使用以下代码, activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
    
    <FrameLayout
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
    <ListView
    android:id="@+id/drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#FFF"
    android:choiceMode="singleChoice"/>
    </LinearLayout>
    

    MainActivity.java

    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentTransaction;
    import android.support.v4.widget.DrawerLayout;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    public class MainActivity extends FragmentActivity {
        final String[] data ={"one","two","three"};
        final String[] fragments ={
                "Your.package.Name.FragmentOne",
                "Your.package.Name.FragmentTwo",
                "Your.package.Name.FragmentThree"};
        @Override
        protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
    
             ArrayAdapter adapter = new ArrayAdapter(getActionBar().getThemedContext(), android.R.layout.simple_list_item_1, data);
    
             final DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout);
             final ListView navList = (ListView) findViewById(R.id.drawer);
             navList.setAdapter(adapter);
             navList.setOnItemClickListener(new OnItemClickListener(){
                     @Override
                     public void onItemClick(AdapterView<?> parent, View view, final int pos,long id){
                             drawer.setDrawerListener( new DrawerLayout.SimpleDrawerListener(){
                                     @Override
                                     public void onDrawerClosed(View drawerView){
                                             super.onDrawerClosed(drawerView);
                                             FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
                                             tx.replace(R.id.main, Fragment.instantiate(MainActivity.this, fragments[pos]));
                                             tx.commit();
                                     }
                             });
                             drawer.closeDrawer(navList);
                     }
             });
             FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
             tx.replace(R.id.main,Fragment.instantiate(MainActivity.this, fragments[0]));
             tx.commit();
        }
    
    }
    

    并在这种情况下为 FragmentOne、FragmentTwo、FragmentThree 制作片段的布局

    【讨论】:

      【解决方案3】:

      您必须创建一个包含导航抽屉的类,然后您可以在任何您想要的地方扩展特定的类....带有导航抽屉的类。

      不,您要替换 Fragment 的 Activity 应该有导航抽屉。就是这样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-23
        • 1970-01-01
        • 2014-08-02
        相关资源
        最近更新 更多