如何解决如何在 Android 中创建下拉复选框列表?
我想使用 Kotlin 为我的 Android 应用创建一个 Material Design exposed dropdown 菜单,但我希望下拉菜单是一个复选框列表,然后我可以在其中检索用户以编程方式选择的复选框。
我该怎么做?是否已经存在用于执行此操作的库?
解决方法
您可以通过将项目包装到具有 res\menu
属性的 <group>
标记中,在 android:checkableBehavior="all"
中创建一个可检查菜单:
poupup_menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="all">
<item
android:id="@+id/one"
android:title="One" />
<item
android:id="@+id/two"
android:title="Two" />
<item
android:id="@+id/three"
android:title="Three" />
</group>
</menu>
然后以编程方式对其进行膨胀,并跟踪数组中的选中项:
boolean[] isChecked;
private PopupMenu mPopupMenu;
private void showPopupMenu() {
// Button used to anchor the popup menu and to show it on its click
final Button button = (Button) findViewById(R.id.button);
if (mPopupMenu == null) {
//Creating the instance of PopupMenu
mPopupMenu = new PopupMenu(MainActivity.this,button);
//Inflating the Popup using xml file
mPopupMenu.getMenuInflater().inflate(R.menu.poupup_menu,mPopupMenu.getMenu());
isChecked = new boolean[mPopupMenu.getMenu().size()];
}
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPopupMenu.show();
mPopupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
int position = -1;
if (item.getItemId() == R.id.one) position = 0;
else if (item.getItemId() == R.id.two) position = 1;
else if (item.getItemId() == R.id.three) position = 2;
if (position != -1) {
isChecked[position] = !isChecked[position];
item.setChecked(isChecked[position]);
}
return true;
}
});
}
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。