如何在工具栏中添加自定义背景的CheckBox - android

时间:2017-04-06 07:11:45

标签: android checkbox

嗨,我是Android和这里的新手 我想在我的工具栏中使用自定义背景的CheckBox 我的用例是:我想通过工具栏中的复选框将当前帖子(在我的活动中)添加到收藏夹列表 我想使用一个星(开/关)图标。

我试过这个但是checkBox为空

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/shwo_menu_download_mp3"
    android:title="@string/download_mp3"
    app:showAsAction="never"/>
<item android:id="@+id/show_menu_add_to_fav"
    android:checked="true"
    android:enabled="true"
    app:showAsAction="always"
    />
<item android:id="@+id/show_menu_setting"
    android:title="@string/show_menu_setting"
    app:showAsAction="never" />

和我的活动:

 @Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show_speech);
    initCheckBox();
    ...
}

CheckBox checkBoxFav;

private void initCheckBox() {
    checkBoxFav = (CheckBox) findViewById(R.id.show_menu_add_to_fav);

    checkBoxFav.setText("some Text");
}

2 个答案:

答案 0 :(得分:1)

使用工具栏可以执行此操作

setSupportActionBar(toolbar);
View view= getLayoutInflater().inflate(R.layout.view_, null);
Checkbox chbox = view.findViewById(..);
//chbox.do what u want with it
toolbar.addView(logo);

视图布局包含一个复选框并按您的意愿设计

答案 1 :(得分:0)

您必须遵循以下步骤:
1.创建工具栏并将其添加到您的活动中。我不打算解释,因为有很多关于这个问题的教程 2.创建一个包含复选框小部件的菜单:

<?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"
    >
    <item
        android:id="@+id/menu_star"
        android:checkable="true"
        app:actionViewClass="android.widget.CheckBox"
        app:showAsAction="ifRoom"
        android:title="@string/favorite" />

</menu>
  1. 在drawable文件夹中添加一组图标。未选中状态的一个图标和已检查状态的一个图标。

  2. 创建一个资源文件并为其命名(在此示例中名称为star.xml),将其添加到drawable文件夹并在其中插入以下代码:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:state_checked="true"
            android:drawable="@drawable/star_black"
            />
        <item
            android:state_selected="true"
            android:drawable="@drawable/star_black"
            />
        <item
            android:state_checked="false"
            android:drawable="@drawable/star_border_black"
            />
       <item
            android:drawable="@drawable/star_border_black"
            />
    </selector>
    
  3. 在您的活动中创建onCreateOptionsMenu方法并插入以下代码。选中或取消选中后,复选框的图标会自动更改。

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.menu,menu);
        CheckBox checkBox = (CheckBox)menu.findItem(R.id.menu_star).getActionView();
        checkBox.setButtonDrawable(R.drawable.star);//set the icon to star.xml
    
    
        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                //set the action of the checkbox
        }
        });
    
    
    
        return super.onCreateOptionsMenu(menu);
    }