ActionBarで、タブモードやリストモードとActionボタンを併用すると、表示スペースが足
りなくなることがよくあります。
これを解決する方法の1つにsplitActionBarWhenNarrowがあります。
splitActionBarWhenNarrowは、ActionBarに十分な表示領域が無い場合、
画面の上下にActionBarを分割してくれるUIオプションです。
実際に分割された画面は図1のようになります。
しかし、分割されない場合もあります(図2)
図1 |
図2 |
なぜでしょう?
●ActionBarが分割されない条件は?
splitActionBarWhenNarrowでActionBarを分割するには画面横幅480dp以上必要です。ActionBarを分割するか否かを判断するロジックは、
com.android.internal.policy.impl.PhoneWindow.installDecorメソッドにあります。
if (splitWhenNarrow) { splitActionBar = getContext().getResources().getBoolean( com.android.internal.R.bool.split_action_bar_is_narrow);boolリソースのsplit_action_bar_is_narrow値を読み込んでいるのがわかりますね。
このbool値は、下記のように定義されています。
・framework/base/core/res/res/values/bools.xml
<resources> ... <bool name="split_action_bar_is_narrow">true</bool> </resources>・framework/base/core/res/res/values-w480dp/bools.xml
<resources> ... <bool name="split_action_bar_is_narrow">false</bool> </resources>つまり、画面横幅が480dp以上ある場合はfalse(分割されない)というわけです。
●おわりに...
本当にw480dp未満であれば横画面でも分割されるのか試してみました。QVGA(240x320 / Low dpi)のスキンで確認した結果↓
ちゃんと分割されますね。
以上です。