Как использовать тот же эффект ряби, что и на кнопках меню. То есть цвет волн варьируется в зависимости от включения. На данный момент, вот так:
меню
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/elect"
android:icon="@drawable/ic_elect_off"
android:checkable="true"
android:checked="false"
android:title="@string/menu_elect"
app:showAsAction="ifRoom" />
</menu>
Java
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_rule, menu);
MenuItem item = menu.findItem(R.id.elect);
item.setChecked(rule.isElect());
item.setIcon(rule.isElect() ? R.drawable.ic_elect_on : R.drawable.ic_elect_off);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.elect) {
item.setChecked(!item.isChecked());
item.setIcon(item.isChecked() ? R.drawable.ic_elect_on : R.drawable.ic_elect_off);
rule.setElect(item.isChecked());
Labs.get(getActivity()).updateRule(rule);
}
return super.onOptionsItemSelected(item);
}
Я пытался сделать это так, и это сработало, но из минусы - проблемы с шириной кнопки, много кода.
меню
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/elect"
app:actionViewClass="android.widget.CheckBox"
android:checkable="true"
android:title="@string/menu_elect"
app:showAsAction="ifRoom" />
</menu>
Java
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_rule, menu);
MenuItem item = menu.findItem(R.id.elect);
final CheckBox checkBox = (CheckBox) item.getActionView();
checkBox.setButtonDrawable(R.drawable.elect);
checkBox.setChecked(rule.isElect());
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
rule.setElect(checkBox.isChecked());
Labs.get(getActivity()).updateRule(rule);
}
});
}
избираемое рисование
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="false"
android:drawable="@drawable/ic_elect_off" />
<item
android:state_checked="true"
android:drawable="@drawable/ic_elect_on" />
</selector>