Android Drawerlayout touchlistener无法正常工作

时间:2014-08-25 05:03:03

标签: android drawerlayout

我正在使用android drawerlayout但左抽屉中的任何touchlisteners(包括按钮onclicks)都无法正常工作。 每当我尝试触摸左侧抽屉时,立即关闭。

我在MainActivity.java中的源代码

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

    ...

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerView = (LinearLayout) findViewById(R.id.left_drawer);
    mDrawerLayout.setDrawerListener(myDrawerListener);
    mDrawerView.setOnTouchListener(new OnTouchListener(){
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            Log.i("myTag", "hello world");
            return true;
        }
    });
    findViewById(R.id.drawer_my_btn).setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Log.i("myTag", "my");
        }
    });
    findViewById(R.id.drawer_shared_btn).setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Log.i("myTag", "shared");
        }
    });

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    createMemo(savedInstanceState);
}

和activity_main.xml

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

    <LinearLayout
        android:id="@+id/left_drawer"
        android:layout_width="170dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@drawable/bg"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:orientation="horizontal"
            android:layout_marginLeft="10dp">
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="match_parent"
                android:gravity="center|left"
                android:text="Company: "/>
            <TextView
                android:id="@+id/drawer_company_code"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="match_parent"
                android:gravity="center|left"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:orientation="horizontal"
            android:layout_marginLeft="10dp">
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="match_parent"
                android:gravity="center|left"
                android:text="ID: "/>
            <TextView
                android:id="@+id/drawer_user_id"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="match_parent"
                android:gravity="center|left"/>
        </LinearLayout>

        <Button
            android:id="@+id/drawer_my_btn"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:text="My Notes"/>
        <Button
            android:id="@+id/drawer_shared_btn"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:text="Shared Notes"/>
    </LinearLayout>

    <uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout 
        android:id="@+id/ptr_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <adapter.StaggeredGridView
            android:id="@+id/grid_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:item_margin="8dp"
            app:column_count="@integer/grid_column_count"
            android:background="@drawable/bg"/>
    </uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout>

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

当我尝试触摸其中的left_drawer或按钮时,不会调用onCreate中显示的日志。

我尝试过click_ =“true”到left_drawer,但它不起作用。 这是焦点问题吗?还是touchevent问题? 请帮帮我!

1 个答案:

答案 0 :(得分:0)

通过重新排序xml中的布局,它已经解决了! 我必须首先放入pulltorefreshlayout,然后放入left_drawer(linearlayout)。

谢谢Mike!