喜欢" Messenger"应用程序,右侧的每个列表视图项都有一个选项菜单。但我想将选项菜单添加到每个可展开列表视图项的右侧。我到处搜索和谷歌搜索,但我没有找到任何解决方案。任何形式的帮助将受到高度赞赏。提前谢谢。
信使:
activity_category_list.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:background="#009999"
tools:context="com.remindme.sayem.remindme.CategoryList"
>
<ExpandableListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/categoryListView"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:dividerHeight="0.5dp"
android:divider="#ffffff"
/>
</RelativeLayout>
categoyry_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="15dp"
android:background="#009999"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textAllCaps="false"
android:textColor="#ffffff"
android:text="Large Text"
android:paddingLeft="30dp"
android:id="@+id/categoryItem" />
</LinearLayout>
item_name.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:background="#FFFFFF"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="40dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textAllCaps="false"
android:layout_marginLeft="5dp"
android:numeric="decimal"
android:textColor="#000000"
android:text="Medium Text"
android:id="@+id/itemName" />
</LinearLayout>
category_item_menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
>
<item
android:title="menus"
android:id="@+id/menus"
app:showAsAction="always"
android:icon="@drawable/ic_action_settings"
>
<item
android:title="Edit"
android:id="@+id/editMenu"
/>
<item
android:title="Delete"
android:id="@+id/deleteMenu"
/>
</item>
</menu>
答案 0 :(得分:1)
使用PopupMenu
尝试使用此代码打开选项菜单 private void showPickMenu(View anchor) {
PopupMenu popupMenu = new PopupMenu(context, anchor);
popupMenu.inflate(R.menu.new_menu);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu1
//do something here...
break;
case R.id.menu2:
//do something
break;
}
return false;
}
});
popupMenu.show();
}
和你的R.menu.new_menu文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu1"
android:title="@string/menu1"></item>
<item
android:id="@+id/menu2
android:title="@string/menu2"></item>
</menu>
你必须点击你的视图来传递这个方法
showPickMenu(your_view);
修改强>
更改您的categoyry_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#009999"
android:padding="15dp">
<TextView
android:id="@+id/categoryItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Large Text"
android:textAllCaps="false"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#ffffff" />
<TextView
android:id="@+id/tv_menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:padding="10dp"
android:text="@string/fa_ellipsis_v"
android:textColor="#ffffff"
android:textSize="20sp" />
</RelativeLayout>
和 @ string / fa_ellipsis_v 是一个非常棒的字体,你还必须使用imageview
并在您的java代码中使用此 tv_menu ID并传递给此方法showPickMenu(tv_menu)
并使用我的菜单xml文件