我正在尝试创建一个Instagram风格的ListView。活动顶部有一个工具栏,允许用户按下并显示摄像头。我很满意ToolBar的外观。在ToolBar下面是一个ListView。
布局/ main_activity.xml
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/white">
...
</android.support.v7.widget.Toolbar>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/toolbar"
android:layout_centerHorizontal="true"
android:id="@+id/listView" />
MainActivity.java
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
我为ListView创建了一个自定义适配器。
listView = (ListView) findViewById(R.id.listView);
items = new ArrayList<Item>();
ItemAdapter = new ItemAdapter(this, 0, items);
listView.setAdapter(ItemAdapter);
在ItemAdapter类中,我指定每个ListView项的布局:
public View getView(int position, View convertView, ViewGroup parent) {
Item item = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_list, parent, false);
}
问题出在layouts / item_list.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/photo" android:layout_toEndOf="@+id/photo">
<ImageView
android:id="@+id/usericon"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />
<TextView
android:id="@+id/username"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_more_vert_black_24dp"
android:contentDescription="@string/descr_overflow_button"
android:id="@+id/overflow_menu" />
</LinearLayout>
<ImageView
android:id="@+id/photo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"/>
</RelativeLayout>
当我在我的活动中执行此操作时:
overflowMenu = (ImageView) findViewById(R.id.overflow_menu);
PopupMenu popup = new PopupMenu(this, overflowMenu);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.layout.item_loop, popup.getMenu());
我应该如何在layouts / item_list.xml中显示PopupMenu?
答案 0 :(得分:0)
好的我明白了。充气机要求您始终从R.menu资源中提取。所以我在菜单/文件夹中创建了一个菜单资源,然后夸大了:
inflater.inflate(R.layout.item_menu_list, popup.getMenu());
菜单/ item_menu_list.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<item android:id="@+id/report" android:title="Report"
app:showAsAction="always"/>
<item android:id="@+id/share" android:title="Share"
app:showAsAction="always"/>
</menu>
这些菜单项应添加到您转为弹出菜单的ImageView中。