如何通过触摸Android屏幕上的导航抽屉

时间:2014-06-02 10:43:11

标签: android android-layout android-listview navigation-drawer slidingpanelayout

当我点击4个不同的背景按钮时,我已经成功从左侧完全打开4个不同的导航抽屉。现在,当我点击第一个按钮时,第一个导航抽屉也会打开和关闭。但问题是,当我点击第二个按钮抽屉打开但没有关闭点击列表项并触摸抽屉外。见下图想要的。 this is image 1st this is another one

see code  public class MainActivity extends Activity {
    private ListView mDrawerList;
    private CharSequence mDrawerTitle;
    private ArrayList<NavDrawerItem> navDrawerItems;
    private NavDrawerListAdapter adapter;
    private CharSequence mTitle;
    // slide menu items
        private  String[] navMenuTitles;
        private  TypedArray navMenuIcons;
        private  RelativeLayout leftRL;
        private  RelativeLayout rightRL;
        private  RelativeLayout byleft;
        private  RelativeLayout toleft;
        private  DrawerLayout drawerLayout;
        final String[] data ={"one","two","three"};    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
//      I'm removing the ActionBar.
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);

    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);

        mTitle = mDrawerTitle = getTitle();
     navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);

    navMenuIcons = getResources()
            .obtainTypedArray(R.array.nav_drawer_icons);
    final ListView navList = (ListView) findViewById(R.id.drawer);

    mDrawerList = (ListView) findViewById(R.id.list_slidermenu);

    navDrawerItems = new ArrayList<NavDrawerItem>();

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
    // Communities, Will add a counter here
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1), true, "22"));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1)));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));
    // Recycle the typed array
    navMenuIcons.recycle();


    adapter = new NavDrawerListAdapter(getApplicationContext(),
            navDrawerItems);
    mDrawerList.setAdapter(adapter);

    leftRL = (RelativeLayout)findViewById(R.id.whatYouWantInLeftDrawer);
    rightRL = (RelativeLayout)findViewById(R.id.YouWantInRightDrawer);
    byleft = (RelativeLayout)findViewById(R.id.WantInRightDrawer);
    toleft = (RelativeLayout)findViewById(R.id.InRightDrawer);
    drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); 
    }

    public  void onLeft(View view)
    {
    drawerLayout.openDrawer(leftRL);
    }

    public  void ToLeft(View view)
    {
    drawerLayout.openDrawer(rightRL);
    drawerLayout.setFocusableInTouchMode(true);
    }

    public  void byLeft(View view)
    {
    drawerLayout.openDrawer(byleft);
    }
    public  void throughLeft(View view)
    {
    drawerLayout.openDrawer(toleft);
    }


}


<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="100dp" 
        android:background="#0F0FF0"
        >

        <Button
            android:id="@+id/home_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:background="@drawable/ic_home"
            android:onClick="onLeft" />

        <Button
            android:id="@+id/profile_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@id/home_btn"
            android:background="@drawable/ic_people"
            android:onClick="ToLeft"
            android:clickable="true"
             />

         <Button
             android:id="@+id/chat_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@id/profile_btn"
            android:background="@drawable/ic_photos"
            android:onClick="byLeft"
            android:clickable="true"
             />

         <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@id/chat_btn"
            android:background="@drawable/ic_whats_hot"
            android:onClick="throughLeft"
            android:clickable="true"
             />

    </RelativeLayout>

    <!-- Left Drawrer -->

    <RelativeLayout
        android:id="@+id/YouWantInRightDrawer"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_gravity="left" >

        <ListView
            android:id="@+id/firsr_listview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/holo_green_light" />

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/WantInRightDrawer"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_gravity="left" >

        <ListView
            android:id="@+id/second_listview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/holo_blue_light" />

    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/InRightDrawer"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_gravity="left" >

        <ListView
              android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/holo_green_dark" />

    </RelativeLayout>
       <RelativeLayout
        android:id="@+id/whatYouWantInLeftDrawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start">
        <ListView
            android:id="@+id/list_slidermenu"
            android:layout_width="240dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="@color/list_background"
            android:choiceMode="singleChoice"
            android:divider="@color/list_divider"
            android:dividerHeight="1dp"
            android:listSelector="@drawable/list_selector" />

    </RelativeLayout>
</android.support.v4.widget.DrawerLayout>

1 个答案:

答案 0 :(得分:1)

嗨朋友们,我得到的解决方案见下面的代码

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ff0000" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Open Drawer1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Open Drawer2" />

        <Button
            android:id="@+id/button3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Open Drawer3" />

        <Button
            android:id="@+id/button4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Open Drawer4" />
    </LinearLayout>

    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@android:color/white"
        android:cacheColorHint="#00000000"
        android:choiceMode="singleChoice"
        android:divider="@android:color/black" >
    </ListView>

</android.support.v4.widget.DrawerLayout>

爪哇:

public class MainActivity extends Activity {

    private Button btn1, btn2, btn3, btn4;
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;

    String[] string = { "one", "two", "three", "four", "five" };
    String[] string2 = { "one", "two", "three" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_drawer_layout);

        btn1 = (Button) findViewById(R.id.button1);
        btn2 = (Button) findViewById(R.id.button2);
        btn3 = (Button) findViewById(R.id.button3);
        btn4 = (Button) findViewById(R.id.button4);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        btn1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                        MainActivity.this, android.R.layout.simple_list_item_1,
                        string);

                if (mDrawerLayout.isDrawerOpen(mDrawerList)) {
                    mDrawerLayout.closeDrawer(mDrawerList);
                    mDrawerList.setVisibility(View.INVISIBLE);

                } else {
                    mDrawerList.setAdapter(arrayAdapter);
                    mDrawerLayout.openDrawer(mDrawerList);
                    mDrawerList.invalidate();
                }
            }
        });



        btn2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                ArrayAdapter<String> arrayAdapter1 = new ArrayAdapter<String>(
                        MainActivity.this, android.R.layout.simple_list_item_1,
                        string2);

                if (mDrawerLayout.isDrawerOpen(mDrawerList)) {
                    mDrawerLayout.closeDrawer(mDrawerList);
                    mDrawerList.setVisibility(View.INVISIBLE);

                } else {
                    mDrawerList.setAdapter(arrayAdapter1);
                    mDrawerLayout.openDrawer(mDrawerList);
                    mDrawerList.invalidate();
                }
            }
        });

    }

}

快乐编码!!!!