使用iRoom
属性,如果有足够的空间,Android应该查看按钮,否则会溢出它们。
不幸的是,ActionBar
按钮尽管有可用空间和屏幕大小,但如果设置了iRoom
属性,它们总是被强制溢出,只有在我使用属性always
时才会显示。
我的ActionBar菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_social_share"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:icon="@drawable/action_social_share"
android:title="@string/action_social_share"/>
<item
android:id="@+id/action_home"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:icon="@drawable/action_home"
android:title="@string/action_home"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_about"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_about"/>
</menu>
我的活动
import android.app.ActionBar;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class InfoViewerActivity extends FragmentActivity {
private ActionBar bar;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_infoviewer);
bar = this.getActionBar();
bar.setDisplayHomeAsUpEnabled(true);
bar.setDisplayShowHomeEnabled(false);
bar.setDisplayUseLogoEnabled(false);
bar.setHomeButtonEnabled(true);
bar.setDisplayShowTitleEnabled(false);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.info_viewer, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_home:
//TO DO
return true;
case R.id.action_social_share:
//TO DO
return true;
case R.id.action_settings:
//TO DO
return true;
case R.id.action_about:
//TO DO
return true;
default:
// Handle your other action bar items...
return super.onOptionsItemSelected(item);
}
}
}
我无法找到此问题的原因,并且在没有此问题的情况下使用了类似的代码。
答案 0 :(得分:1)
检查此主题的第一个答案showAsAction="ifRoom" doesn't show the item even when there is plenty of room 可能是名称空间问题。希望它有所帮助。
答案 1 :(得分:0)
android:orderInCategory由Integer表示。 它表示&#34;重要性的顺序&#34;该项目,在一个组内。 删除该属性或将其设置为类似1
的值 <item
android:id="@+id/action_social_share"
android:orderInCategory="1"
android:showAsAction="ifRoom"
android:icon="@drawable/action_social_share"
android:title="@string/action_social_share"/>
<item
android:id="@+id/action_home"
android:orderInCategory="2"
android:showAsAction="ifRoom"
android:icon="@drawable/action_home"
android:title="@string/action_home"/>
<item
android:id="@+id/action_settings"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_about"
android:showAsAction="never"
android:title="@string/action_about"/>