Почему пользовательский макет не отображается в пункте меню параметров?
Некоторые из упомянутых постов используют пространство имен приложения вместо пространства имен Android, и showAsAction должно быть «всегда». Пробовал со всеми комбинациями, но без удачи.
Это всегда показывает пустой макет.
ниже мой код
Это макет меню
<?
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"
tools:context="com.dms.hanumanchalisa.activities.MainActivity">
<item android:id="@+id/menu_group"
android:icon="@drawable/ic_action_overflow"
app:showAsAction="always">
<menu>
<item
android:id="@+id/menu_set_alarm"
app:showAsAction="always"
app:actionLayout="@layout/layout_alarm"
android:actionProviderClass="android.widget.ShareActionProvider" />
<item
android:id="@+id/menu_adjust"
android:icon="@android:drawable/ic_menu_add"
android:title="@string/adjust_string"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/menu_delete"
android:icon="@android:drawable/ic_menu_delete"
android:title="@string/delete_string"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/menu_about"
android:icon="@android:drawable/ic_menu_info_details"
android:title="@string/about_string"
app:showAsAction="ifRoom"/>
</menu>
</item>
</menu>
пользовательский макет, используемый в меню
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/startSetDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set Target Time" />
<CheckBox
android:id="@+id/btnalarm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="@string/string_alarm_off"
android:textOn="@string/string_alarm_on" />
</RelativeLayout>
Java-код, используемый в действии для отображения меню параметров
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
optionsMenu = menu;
MenuItem groupItem = optionsMenu.findItem(R.id.menu_group);
MenuItem alarmMenuItem = (MenuItem) groupItem.getSubMenu().findItem(R.id.menu_set_alarm);
btnSelectTime = (Button) alarmMenuItem.getActionView().findViewById(R.id.startSetDialog);
alarmSetCheckbox = (CheckBox) alarmMenuItem.getActionView().findViewById(R.id.btnalarm);
btnSelectTime.setOnClickListener(this);
alarmSetCheckbox.setOnCheckedChangeListener(this);
if (isPrayerExsists) {
groupItem.setVisible(true);
} else {
groupItem.setVisible(false);
}
return true;
setOnclicklistener также не выдает никаких ошибок, что означает, что представления в пользовательском макете не равны NULL.
ТИА