如何将CheckBox添加到工具栏?

问题描述 投票:2回答:2

我尝试使用以下代码,但是没有出现复选框,只有文本:

<item
    android:id="@+id/menuShowDue"
    android:actionViewClass="android.widget.CheckBox"
    android:title="@string/string_due"
    android:checkable="true"
    app:showAsAction="ifRoom" />

是否无法通过菜单添加它?我还应该做点其他事情吗?

我正在使用android.support.v7.widget.Toolbar作为工具栏。

android android-toolbar android-checkbox
2个回答
9
投票

请对app:actionViewClassapp:showAsAction进行如下所示的更改,它应该对您有用。

<item
    android:id="@+id/menuShowDue"
    android:checkable="true"
    android:title="@string/string_due"
    app:actionViewClass="android.widget.CheckBox"
    app:showAsAction="ifRoom|withText" />

也对onCreateOptionsMenu()进行相关更改。下面粘贴的示例文本;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);

    CheckBox checkBox = (CheckBox) menu.findItem(R.id.menuShowDue).getActionView();
    checkBox.setText("Sample Text");
    return true;
}

0
投票

您可以在OnCreateOptionsMenu上设置标题。使用MenuItem应该足够。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);

    MenuItem checkBoxMenuItem =  menu.findItem(R.id.menuShowDue);
    checkBoxMenuItem.setTitle("Sample Text");
    return true;
}

在OptionsItemSelected中,检查是否选中了复选框:

public boolean onOptionsItemSelected(MenuItem item)
{
    switch (item.getItemId())
    {
    case R.id.menuShowDue:
        if(item.isChecked())
        {
            item.setChecked(false);
        }else{
            item.setChecked(true);
        }
        break;
}
© www.soinside.com 2019 - 2024. All rights reserved.