ポップアップメニューのmenuItemsをカスタマイズするにはどうすればよいですか?最初のメニュー項目のスイッチが必要です。これが私がこれまでに得たものです:
menu.xml
<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="Android.oli.com.fitnessapp.activities.LiveSelectActivity">
<item
Android:icon="@drawable/ic_access_alarm_white_24dp"
Android:orderInCategory="100"
app:showAsAction="always"
Android:visible="true"
Android:title="@string/action_settings"
Android:onClick="showPopup"/>
</menu>
menu_popup.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item
Android:id="@+id/one"
Android:title="One"/>
<item
Android:id="@+id/setTime"
Android:title="Two"
Android:onClick="showTimePickerDialog"/>
</menu>
アクティビティスニペット
public void showPopup(MenuItem menuItem){
View view = findViewById(R.id.action_alarm);
PopupMenu popup = new PopupMenu(this, view);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.menu_popup, popup.getMenu());
popup.show();
}
カスタムレイアウトを使用できるため、popupwindowを使用できます。
<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"
tools:context=".MainActivity"
Android:padding="5dp">
<Switch
Android:id="@+id/mySwitch"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:layout_marginTop="20dp"
Android:text="Play with the Switch" />
<TextView
Android:id="@+id/switchStatus"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_below="@+id/mySwitch"
Android:layout_marginTop="22dp"
Android:text="Medium Text"
Android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
そして、私たちの活動では、このメソッドを実装します。
/* you should refer to a view to stick your popup wherever u want.
** e.g. Button button = (Button) findviewbyId(R.id.btn);
** if(popupWindow != null)
** showPopup(button);
**/
public void showPopup(View v) {
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View popupView = layoutInflater.inflate(R.layout.popup_filter_layout, null);
popupWindow = new PopupWindow(
popupView,
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setOutsideTouchable(true);
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
//TODO do sth here on dismiss
}
});
popupWindow.showAsDropDown(v);
}