我的操作栏中有一个按钮,它隐藏了所有按钮,并且应该显示另外三个按钮,但它只显示其中的两个按钮。项目数为7.按钮(必须显示)showAsAction是ifRoom。
以下是隐藏/取消隐藏按钮的方法:
private void hideUnhideActionButtons(boolean hide) {
MenuItem item;
Log.d("Item numbers", Integer.toString(audioMenu.size()));
for(int i = 0; i < audioMenu.size(); ++i ) {
if(i < 4)
audioMenu.getItem(i).setVisible(!hide);
else
audioMenu.getItem(i).setVisible(hide);
}
audioMenu.getItem(6).setVisible(true);
}
以下是我称之为此方法的地方:
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
switch(id) {
case R.id.action_camera:
...
return true;
case R.id.action_audio:
hideUnhideActionButtons(true);
return true;
case R.id.action_record:
...
return true;
case R.id.action_play:
...
return true;
case R.id.action_return:
hideUnhideActionButtons(false);
return true;
case R.id.action_delete:
...
return true;
case R.id.action_save:
...
return true;
}
return super.onOptionsItemSelected(item);
}
我的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"
tools:context="com.example.victwo.NewNoteActivity" >
<item
android:id="@+id/action_save"
android:icon="@drawable/ic_action_save"
android:orderInCategory="100"
android:title="@+string/action_save"
app:showAsAction="always"/>
<item
android:id="@+id/action_delete"
android:icon="@drawable/ic_action_remove"
android:orderInCategory="100"
android:title="@+string/action_delete"
app:showAsAction="always"/>
<item
android:id="@+id/action_camera"
android:icon="@drawable/ic_action_camera"
android:orderInCategory="100"
android:title="@+string/action_camera"
app:showAsAction="always"/>
<item
android:id="@+id/action_audio"
android:icon="@drawable/ic_action_volume_on"
android:orderInCategory="100"
android:title="@+string/action_record"
app:showAsAction="always"/>
<item
android:id="@+id/action_record"
android:icon="@drawable/ic_action_mic"
android:orderInCategory="100"
android:title="@+string/action_record"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_play"
android:icon="@drawable/ic_action_play"
android:orderInCategory="100"
android:title="@+string/action_play"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_return"
android:icon="@drawable/ic_action_back"
android:orderInCategory="100"
android:title="@+string/action_return"
app:showAsAction="ifRoom"/>
</menu>
有人可以告诉我这是什么问题吗?
答案 0 :(得分:0)
我看到您的菜单引用了audioMenu
。因此,您可以使用findItem
方法访问自己的菜单项,并使用id
代替indexes
。
示例:
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
switch(id) {
case R.id.action_camera:
...
return true;
case R.id.action_audio:
//hide
actionMode.findItem(R.id.id_1).setVisible(false);
actionMode.findItem(R.id.id_2).setVisible(false);
//show
actionMode.findItem(R.id.id_3).setVisible(true);
actionMode.findItem(R.id.id_4).setVisible(true);
return true;
case R.id.action_record:
...
return true;
}
return super.onOptionsItemSelected(item);
}