如果设置了iRoom属性,则ActionBar按钮始终强制溢出

时间:2015-03-28 23:34:16

标签: android android-actionbar

使用iRoom属性,如果有足够的空间,Android应该查看按钮,否则会溢出它们。 不幸的是,ActionBar按钮尽管有可用空间和屏幕大小,但如果设置了iRoom属性,它们总是被强制溢出,只有在我使用属性always时才会显示。

enter image description here

我的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);
        }
    }

}

我无法找到此问题的原因,并且在没有此问题的情况下使用了类似的代码。

2 个答案:

答案 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"/>