私はこの単純なAndroidアプリケーションを開発中です。私はアクションバーに3つのメニューアイテムを持っており、それぞれのメニューアイテムは3つの異なるフラグメントをクリックすると膨らみます。アクションバーメニューアイテムアイコンを変更するAndroidスタジオで押したとき
私の質問:メニュー項目の1つをクリックすると、そのメニュー項目のアイコンがドロワブルフォルダの別のアイコンに変わり、別のメニュー項目をクリックして最初のものに変わるまでアイコンをクリックする前に
"state_pressed"でセレクタ.xmlを使用しようとしましたが、メニュー項目をクリックするとアイコンが1秒間変更されますが、クリックをやめるとすぐに最初のアイコンに戻ります。以下の関連コードを見つけることができます。あなたが私にこのことを手伝ってもらえれば幸いです。
submenu.xml(アクションバーのメニュー):
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" >
<item
android:id="@+id/action_todo"
android:title=""
android:icon="@drawable/action_bar_selector"
app:showAsAction="always" />
</menu>
action_bar_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/ic_check_box_white_24dp"
android:state_pressed="true" />
<item
android:drawable="@drawable/ic_check_box_white_24dp_unpressed" />
</selector>
ProjectTodo.java(フラグメントクラスでアクションバーを膨らませます) :
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
inflater.inflate(R.menu.submenu, menu);
}
public boolean onOptionsItemSelected(MenuItem item){
int id = item.getItemId();
if(id == R.id.action_back){
ProjectDetails frag = new ProjectDetails();
ProjectMainListFragmentChanger fragInterface = (ProjectMainListFragmentChanger) getActivity();
fragInterface.projectMainListChangeFragment(frag);
return false;
}
if(id == R.id.action_details){
return true;
}
if(id == R.id.action_todo){
ProjectDetails frag = new ProjectDetails();
ProjectTodoFragmentChanger fragInterface = (ProjectTodoFragmentChanger) getActivity();
fragInterface.projectTodoChangeFragment(frag);
return false;
}
return super.onOptionsItemSelected(item);
}
現在のアプリケーションのクイック.gifイメージが表示されます。私は、メニュー項目をクリックすると、それだけで第二のために第二のアイコンに変わり、その後、元のアイコンに行く:
アクティビティごとにアクションバーが1回作成されます。アクションバーで何かを変更する必要があるときは、アクションバーを無効にする必要があります。だから、アイコンをクリックするたびにメニュー項目を再膨張させ、アクションバーを無効にしてください –