5

上部のバーが暗く、下部のバー (分割) が明るい分割アクション バーがあります。

したがって、対照的なアクション アイコンを表示したいと思います。上部の暗いバーに明るいアイコンを、下部の明るいバーに暗いアイコンを表示します。

問題は、アクションを上部または下部のバーにペイントする必要があるかどうかを知ることです。どうすればそれを知ることができますか?

もう 1 つのオプションは、アクション バーが現在分割されているかどうかを知ることです。どうすればそれを知ることができますか?

ありがとう。

4

2 に答える 2

8

単純。ブール値を使用します。画面幅が400dpより小さい場合、デフォルトで分割アクションバーが表示されます。したがって、valuesフォルダーに次のように配置できます。

/values/bools.xml:

<resources>
    <bool name="split_action_bar">true</bool>
</resources>

そしてあなたのvalues-sw400dpにあなたは以下を入れます。

/values-sw400dp/bools.xml:

<resources>
    <bool name="split_action_bar">false</bool>
</resources>

これで、その値に基づいてアイコンを設定できます。

boolean isActionBarSplitted = getResources().getBoolean(R.bool.split_action_bar);
if(isActionBarSplitted){
      // set light icon
}
else{
     // set dark icon
}

編集:

実際に私が書いたことを忘れてください。それをチェックするために独自のブール値を作成する必要はありません。すでに宣言されているものが1つあります(これは、ActionBarが受話器デバイスかタブレットかを判断するために使用するものです)。android.R.bool.split_action_bar_is_narrowAndroid HC +をターゲットにしている場合、ActionBarSherlock:を使用している場合は 、デフォルトのActionBars値:にアクセスできます R.bool.abs_split_action_bar_is_narrow。デフォルトのActionBar 、ここではABSがここにあります

于 2013-01-04T01:52:56.893 に答える
0

使用しているライブラリによって異なります。

新しいAppcompatR.bool.abc_split_action_bar_is_narrowの場合:次の値を確認します。

boolean split = getResources().getBoolean(R.bool.abc_split_action_bar_is_narrow);

ActionBarShelockの場合:ResourcesCompatライブラリからクラスをインポートして呼び出します。

boolean split = ResourcesCompat.getResources_getBoolean(this, R.bool.abs__split_action_bar_is_narrow);

ライブラリを使用しない場合は、Ahmadの回答を使用できますが、ライブラリを使用しない場合に限ります。これは、使用する値が異なるためです。幅が 400dp 未満の場合、Android フレームワークはバーを分割するようですが、appcompat と ABS の場合は 480dp です。

于 2014-04-19T13:22:39.613 に答える