6

ActionBarに関する質問がたくさんあることは知っていますが、それらは私の問題に対処していないようです。エミュレーターでActionBarを吐き出すことはできますが、デバイスでプログラムを実行すると(Nexus 7ポートレートモード)、ActionBarが分割されません。すべてのアイコンが一番上に「積み上げ」られ、タブでさえドロップダウンリストが作成されます。メニュー項目の名前を非常に長くして問題を強制しようとしましたが、android:showAsAction = "always|withText"に設定しています。念のために言っておきますが、サンプルコードを取得し、エミュレーターで実行して動作を確認してから、デバイスに配置しても無駄になりました。これが私のマニフェストです:

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyTheme">
    <activity
        android:name=".MainActivity"
        android:uiOptions="splitActionBarWhenNarrow"
        android:label="@string/title_activity_main">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

Webを精査しましたが、解決策が見つかりません。どんな助けでも大歓迎です。

4

2 に答える 2

7

このSO項目によると、ActionBarは、使用可能な幅が480dp未満の場合にのみ分割されます。ただし、GoogleのDianne Hackbornのこの記事によると、Nexus7の縦長の幅は600dpです。それが分割がない理由です。

分割は、利用可能なスペースだけではなく、利用可能なスペースと表示されるアイテムの関係に依存する必要があることに同意します。

于 2012-11-30T09:04:26.167 に答える
7

私はこの質問がかなり古いことを知っていますが、アクションバーをNexus 7(および可能な他のデバイス)の一番下に強制する方法を見つけました。私は自分の解決策を共有したいと思いました。

このコードをアクティビティに配置します。

/**
 * {@inheritDoc}
 */
@Override
public Resources getResources() {
    return new ResourceFix(super.getResources());
}

private class ResourceFix extends Resources {
    private int targetId = 0;

    ResourceFix(Resources resources) {
        super(resources.getAssets(), resources.getDisplayMetrics(), resources.getConfiguration());
        targetId = Resources.getSystem().getIdentifier("split_action_bar_is_narrow", "bool", "android");
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean getBoolean(int id) throws Resources.NotFoundException {
        return targetId == id || super.getBoolean(id);
    }
}

これにより、内部の「split_action_bar_is_narrow」値が強制的にtrueになります。これを行うには最善の方法ではないかもしれませんが、私が見つけた唯一の方法のようです。

于 2014-05-20T08:52:14.647 に答える