프로그래밍 방식으로 사용자 정의 항목보기가있는 작업 표시 줄 메뉴를 만들려고합니다. MenuItem.setActionView()가 작동하지 않습니다.
내menu.xml
파일 : 메뉴의
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_category"
android:icon="@drawable/ic_category"
app:showAsAction="always|collapseActionView"
android:title="@string/category">
<menu>
</menu>
</item>
</menu>
창조 :
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu, menu);
MenuItem category = menu.findItem(R.id.action_category);
Menu categoriesMenu = category.getSubMenu();
Category[] items = Category.values();
LayoutInflater baseInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int i = 0; i < items.length; ++i){
Category c = items[i];
MenuItem item = categoriesMenu.add(i, c.id, 0, c.resourceText);
View myCustomView = baseInflater.inflate(R.layout.category_list_item, null);
((ImageView)myCustomView.findViewById(R.id.icon)).setImageResource(c.resourceIcon);
item.setActionView(myCustomView);
}
}
그러나 setActionView()
이 작동하지 않습니다. 표준 텍스트 전용 항목 만 생성됩니다. 누구든지 programatically 사용자 정의 레이아웃 메뉴 항목을 만드는 방법을 알고 있습니까?
getActivity()를 호출합니다. 따라서이 코드를 프래그먼트에서 사용하고 있다고 가정합니다. 'setHasOptionsMenu (true);'메소드를 통해 프래그먼트에서 메뉴를 활성화합니까? – comrade
예, 메뉴가 생성되었지만 사용자 정의가 아닌 기본 항목보기가 있습니다. – mol