DrawerLayout中的按钮不可点击

时间:2014-08-15 03:21:56

标签: android button android-linearlayout drawerlayout

我一直在寻找这个问题并且我无法找到解决方案。 对于我的DrawerLayout设计,我不会使用listview而是使用linearlayout作为我的视图的容器。我首先通过在linearlayout中添加一个按钮来测试它,但我无法点击它。 继承了XML。

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

<LinearLayout
        android:id="@+id/left_drawer"
        android:background="@color/white"
        android:orientation="vertical"
        android:layout_gravity="start"
        android:layout_width="250dp"
        android:layout_height="match_parent">
    <Button
            android:id="@+id/btn_test"
            android:text="TEST"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    <EditText

            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

</LinearLayout>

<FrameLayout
        android:id="@+id/container_fragment2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="1dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        >
</FrameLayout>

在java中,我还尝试在按钮加载和工作后将文本放在按钮中。唯一不起作用的是当我点击它时。抽屉就会关闭。

/**Init Drawer*/
private void initDrawer(){

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerContainer = (LinearLayout) findViewById(R.id.left_drawer);

    //mDrawerContainer.setOnClickListener(new DrawerItemClickListener());
    mDrawerContainer.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(context,"initDrawer",Toast.LENGTH_SHORT).show();
        }
    });

    btn_test = (Button)mDrawerContainer.findViewById(R.id.btn_test);
    btn_test.setOnClickListener(new View.OnClickListener() { //this is not working,i cant click the button
        @Override
        public void onClick(View v) {
            Log.e("MyActivity","test");
            Toast.makeText(context,"test",Toast.LENGTH_SHORT).show();
        }
    });
    btn_test.setText("hooray"); //this one is working,it change the text to hooray once loaded


}

我期待你的输入人员,

非常感谢。

4 个答案:

答案 0 :(得分:8)

讽刺的是,我只是改变布局的位置。我将线性布局转移到片段下方,现在正在工作。

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



<FrameLayout
        android:id="@+id/container_fragment2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="1dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        >
</FrameLayout>

<LinearLayout
        android:id="@+id/left_drawer"
        android:background="@color/white"
        android:orientation="vertical"
        android:layout_gravity="start"
        android:layout_width="250dp"
        android:layout_height="match_parent">
    <Button
            android:id="@+id/btn_test"
            android:text="TEST"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    <EditText

            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

</LinearLayout>

答案 1 :(得分:0)

检查一下! reference

you have to set a TouchListener for your drawer layout.
eg/

    gestureDetector = new GestureDetector(this, new CustomGestureListener());

        mDrawerLayout.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                if (gestureDetector.onTouchEvent(event)) {
                    return true;
                }
                return false;
            }
        });

答案 2 :(得分:0)

删除您在DrawerLayout上设置的OnClickListener

答案 3 :(得分:0)

检查---- 按住布局按住按钮 这是我的xml

    <RelativeLayout
        android:id="@+id/whatYouWantInLeftDrawer"
        android:layout_width="280dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#EBF4FA">
        <RelativeLayout
            android:id="@+id/top_view_rel"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:background="@color/blue_color">

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_margin="10dp"
                android:visibility="visible">
                <TextView
                    android:id="@+id/name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/drawer_driver_name"
                    android:textColor="@color/text_color"
                    android:textSize="16sp"
                    android:textStyle="bold" />


                <TextView
                    android:id="@+id/name_tv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignLeft="@+id/name"
                    android:layout_marginLeft="135dp"
                    android:text="name"
                    android:textAllCaps="true"
                    android:textColor="@color/text_color"
                    android:textSize="16sp"
                    android:visibility="gone" />
                <Button
                    android:id="@+id/edit"
                    android:layout_width="30dp"
                    android:layout_height="25dp"

                    android:layout_alignParentRight="true"
                    android:background="@color/colorTransparent"
                    android:drawableRight="@drawable/edit1"
                   />

活动 -

 leftDrawerRel = (RelativeLayout)findViewById(R.id.whatYouWantInLeftDrawer);
    edit= (Button)leftDrawerRel.findViewById(R.id.edit);
    edit.setOnClickListener(this);