嗨,我是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");
}
答案 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>
在drawable文件夹中添加一组图标。未选中状态的一个图标和已检查状态的一个图标。
创建一个资源文件并为其命名(在此示例中名称为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>
在您的活动中创建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);
}