Android在导航抽屉中,当我点击任何地方时,抽屉关闭。

5
在导航抽屉中,当我点击按钮或其他任何东西时,抽屉会关闭。问题出在哪里呢? 我在互联网上搜索了一下,但没有找到与我的代码不同的内容。也许有一些错误,但我还没有找到它们。
代码:
index.xml
<?xml version="1.0" encoding="utf-8"?>
<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"
    android:background="#bbb9b9b9">



    <ListView
        android:id="@+id/listViewDrawer"
        android:layout_width="240dp"
        android:layout_gravity="start"
        android:layout_height="match_parent"
        android:background="#fff"
        android:padding="3dp"
        android:choiceMode="singleChoice"
        android:dividerHeight="1dp"
        android:divider="@android:color/transparent">
    </ListView>

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="10">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:weightSum="10">

        <ImageButton
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:id="@+id/btnMalt"
            android:layout_weight="1.5"
            android:src="@drawable/mal" />


        <EditText
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:id="@+id/legerin_ett"
            android:layout_weight="5.5"
            android:hint="@string/legerin_text" />

        <ImageButton
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:id="@+id/btnLegerint"
            android:layout_weight="1.5"
            android:src="@drawable/legerin" />

        <ImageButton
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:id="@+id/btnDerkevet"
            android:layout_weight="1.5"
            android:src="@drawable/derkeve" />
    </LinearLayout>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/sernavt"
        android:gravity="center"
        android:text="sepana tirşikê ji bo telefonên jîr"
        android:textStyle="bold"
        android:textColor="#ff000000"
        android:textSize="20dp"
        android:layout_marginTop="3dp"
        android:layout_marginBottom="3dp" />

    <ListView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:id="@+id/listViewt"
        android:layout_gravity="center_horizontal"
        android:layout_weight="9"
        android:layout_marginBottom="5dp" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:text="@string/peyameke_binivise"
        android:id="@+id/buttonPeyamBinivise"
        android:layout_gravity="center_horizontal"
        android:layout_weight="1" />

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

在 main.java 相关的代码中:

NuceMijarAdapter adapter1 = new NuceMijarAdapter(Index.this,R.layout.list_mijar_layout,arr);
lvDrawer.setAdapter(adapter1);


private class NuceMijarAdapter extends ArrayAdapter<String> {
    private ArrayList<String> items;

    public NuceMijarAdapter(Context context, int textViewResourceId, ArrayList<String> items) {
        super(context, textViewResourceId, items);
        this.items = items;
    }

    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.list_mijar_layout, null);
        }
        final String o = items.get(position);
        if (o != null) {
            String htmlText = o.replace("<a href=\"index.php?","<a href=\"http://www.tirsik.net/index.php?")
                    .replace("padding-left:8px","padding-left:1px")
                    .replace(" » ","");
            final NuceMijarIro nuce = mijarIroAction(htmlText);
            Button tvMijar = (Button) v.findViewById(R.id.tvMijar);
            Button tvHejmar = (Button) v.findViewById(R.id.tvHejmar);
            tvMijar.setText(nuce.mijar);
            tvHejmar.setText(nuce.hejmar);

            tvMijar.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Log.d("url: ", nuce.link);
                    if(nuce.link.contains("index.php?mijar")) {
                        urlIndex = nuce.link;
                        if(teketin) mijarRasthatiTeketi("bnr");
                        else mijarRasthati("bnr");
                    }
                }
            });
        }
        return v;
    }
}

我强烈建议你在刚开始时使用新的设计库:https://github.com/chrisbanes/cheesesquare。 - Jared Burrows
你的问题是什么?发生了什么事情,你不想要发生什么或者你想要创造什么样的行为?请详细说明一下。 - AkiAki007
有一系列的按钮,当我点击它们时,应用程序会解析一个URL并列出一个文本列表。但是当我点击抽屉时,抽屉只是关闭了,应用程序什么也没做。 - Mazlum Özdoğan
查看我的答案:导航抽屉代码更新 - Muhammad Usman Ghani
2个回答

13

我曾经遇到过同样的问题。

我有一个带有RecyclerView导航抽屉的布局,只需将导航代码移动到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/DrawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="7dp">


<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

//some code here for the body of your activity

</RelativeLayout>


<android.support.v7.widget.RecyclerView
    android:id="@+id/RecyclerView"
    android:layout_width="350dp"
    android:layout_height="match_parent"
    android:layout_gravity="right"
    android:background="#ffffff"
    android:scrollbars="vertical">

</android.support.v7.widget.RecyclerView>

希望它对你也有用...


3
这意味着需要将 NavigationView 置于前台。navigationView.bringToFront() 等同于这个答案。 - MMK

0

更多解释,请参考:

<ListView
        android:id="@+id/listViewDrawer"
        android:layout_width="240dp"
        android:layout_gravity="start"
        android:layout_height="match_parent"
        android:background="#fff"
        android:padding="3dp"
        android:choiceMode="singleChoice"
        android:dividerHeight="1dp"
        android:divider="@android:color/transparent">
    </ListView>

将会是你的内容和其他内容实际上将会是你的NavigationDrawer

请看它是如何工作的:

http://developer.android.com/training/implementing-navigation/nav-drawer.html

其中说:

以下布局使用一个带有两个子视图的DrawerLayout:一个FrameLayout 用于包含主要内容(在运行时由片段填充),和一个ListView用于导航抽屉

并且使用来自新的SupportLibraryNavigationDrawer


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接