我有一个菜单项。当我按下菜单项时,它应显示一个下拉菜单,其外观和动画类似于浮动操作菜单。我该怎么做呢?
我尝试使用ActionView,但意识到这不是要走的路,因为它只会改变操作栏。也许我可以使用Action Provider并将子菜单设置为fab菜单。如果我采用这种方法,无论如何我可以重用现有的FAB菜单(如this)实现吗?或者有更好的方法吗?
答案 0 :(得分:1)
您可以在“MenuItem”中使用“Dialog”,如下所示:
1-首先创建一个布局。
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="match_parent"
android:padding="10dp">
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/radioGroup"
android:weightSum="1"
android:gravity="right">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="S"
android:id="@+id/rbtn_small_z"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:checked="false"
android:textStyle="bold"
android:textSize="18dp"
android:drawableRight="@android:drawable/btn_radio"
android:button="@null"
android:gravity="center_vertical|right" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="M"
android:id="@+id/rbtn_mid_z"
android:layout_below="@+id/rbtn_small_z"
android:layout_centerHorizontal="true"
android:checked="false"
android:textStyle="bold"
android:textSize="18dp"
android:drawableRight="@android:drawable/btn_radio"
android:button="@null"
android:gravity="center_vertical" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="L"
android:id="@+id/rbtn_large_z"
android:layout_below="@+id/rbtn_mid_z"
android:layout_centerHorizontal="true"
android:checked="false"
android:layout_weight="0.86"
android:textStyle="bold"
android:textSize="18dp"
android:drawableRight="@android:drawable/btn_radio"
android:button="@null"
android:gravity="center_vertical|right" />
</RadioGroup>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GO"
android:id="@+id/btn_go"
android:layout_below="@+id/radioGroup"
android:layout_alignRight="@+id/radioGroup"
android:layout_alignEnd="@+id/radioGroup"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
2 - 将“Dialog”代码放在“MenuItem”中,如下所示:
你的班级:
public boolean onOptionsItemSelected(final MenuItem item) {
int id = item.getItemId();
case R.id.size_change:
Dialog dialog = new Dialog(MainWriting.this);
dialog.setContentView(R.layout.custome_alret);
dialog.setTitle("......");
dialog.setCancelable(true);
btnGo = (Button)dialog.findViewById(R.id.btn_go);
rg = (RadioGroup)dialog.findViewById(R.id.radioGroup);
rbtn_small_z = (RadioButton)
dialog.findViewById(R.id.rbtn_small_z);
rbtn_mid_z = (RadioButton) dialog.findViewById(R.id.rbtn_mid_z);
rbtn_large_z = (RadioButton)
dialog.findViewById(R.id.rbtn_large_z);
rg.setOnCheckedChangeListener(new
RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup,
final int i) {
btnGo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (i == rbtn_small_z.getId()) {
}
// do something
}
if (i == rbtn_mid_z.getId()) {
// do something
}
if (i == rbtn_large_z.getId()) {
// do something
}
}
dialog.dismiss();
}});
}});
}
return super.onOptionsItemSelected(item);
}
这只是一个例子,你可以创建你想要的任何“对话框”。