listview标题中的菜单

时间:2016-02-26 12:37:05

标签: java android

当我点击列表视图标题中的按钮时,我正在查找如何显示菜单。 菜单包含按钮,复选框,微调器和textview。 然后我无法使用弹出菜单。我猜。我曾尝试使用弹出窗口执行此操作,但是当我打开弹出窗口时,如果滚动窗口,请不要保持锚定到按钮。 我想要的是在列表视图项目上显示菜单并锚定到按钮的底部,当我滚动列表视图时,菜单仍然固定在按钮上。 主要问题是弹出窗口检查当前活动而不是。 有什么想法吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private ArrayAdapter<String> adapter;

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

        final ListView mDrawerList = (ListView) findViewById(R.id.lw1);
        final View header = getLayoutInflater().inflate(R.layout.header_lw, mDrawerList, false);
        mDrawerList.addHeaderView(header, null, false);

        ArrayList<String> itemss = new ArrayList<String>();
        itemss.add("Title1");
        itemss.add("Title2");
        itemss.add("Title3");
        itemss.add("Title4");
        itemss.add("Title5");
        itemss.add("Title6");
        itemss.add("Title7");
        itemss.add("Title8");
        itemss.add("Title9");
        itemss.add("Title10");
        itemss.add("Title11");
        itemss.add("Title12");
        itemss.add("Title13");
        itemss.add("Title14");
        itemss.add("Title15");
        itemss.add("Title16");
        itemss.add("Title17");
        itemss.add("Title18");
        itemss.add("Title19");
        itemss.add("Title20");
        itemss.add("Title21");
        itemss.add("Title22");

        adapter=new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,
                itemss);
        mDrawerList.setAdapter(adapter);




        final Button btn1 = (Button)findViewById(R.id.button);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                LayoutInflater layoutInflater = (LayoutInflater) mDrawerList.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View popupView = layoutInflater.inflate(R.layout.option_menu, null);
            final PopupWindow popupWindow = new PopupWindow(
                popupView,
                RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);

                popupWindow.showAsDropDown(btn1);


            }
        });

    }
}

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    android:weightSum="1">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=".15"></RelativeLayout>

    <ListView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:id="@+id/lw1"
        android:choiceMode="none"
        android:focusable="false"
        android:headerDividersEnabled="false"
        android:layout_weight=".85"
        android:divider="@null"
        android:dividerHeight="0dp"
        android:listSelector="#00000000"
        android:cacheColorHint="#00000000" />

</LinearLayout>

option_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="1"
    android:id="@+id/lnOption"
    android:paddingLeft="10dp"
    android:paddingRight="10dp">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:paddingTop="15dp">

        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Cb1"
            android:id="@+id/cbAllOff"
            android:checked="false"
            android:buttonTintMode="src_atop"/>

        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Cb2"
            android:id="@+id/cbAllSpecOff"
            android:layout_below="@+id/cbAllOff"
            android:checked="false"
            android:buttonTintMode="src_atop"/>

    </RelativeLayout>

</LinearLayout>

header_lw.xml

<?xml version="1.0" encoding="utf-8"?>
<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="1">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Menu"
        android:id="@+id/button"
        android:layout_gravity="center_horizontal" />
</LinearLayout>

lw_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1">

    <RelativeLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight=".4">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Medium Text"
            android:id="@+id/txt1"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight=".6"></RelativeLayout>
</LinearLayout>

option_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="1"
    android:id="@+id/lnOption"
    android:paddingLeft="10dp"
    android:paddingRight="10dp">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:paddingTop="15dp">

        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Cb1"
            android:id="@+id/cbAllOff"
            android:checked="false"
            android:buttonTintMode="src_atop"/>

        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Cb2"
            android:id="@+id/cbAllSpecOff"
            android:layout_below="@+id/cbAllOff"
            android:checked="false"
            android:buttonTintMode="src_atop"/>

    </RelativeLayout>

</LinearLayout>

当我点击按钮时,弹出窗口显示锚定到按钮。如果我滚动listView并且标题中的按钮变得不可见,则弹出窗口将覆盖操作栏。有一种方法可以在列表项上显示菜单选项并锚定到标题中的按钮吗?

谢谢!