Ответ 1
Причина, по которой он изменяется при настройке targetSDK на 16, заключается в том, что Google изменил способ измерения вкладок в желе Bean. В частности, посмотрите на это в android.internal.view.ActionBarPolicy
:
public boolean hasEmbeddedTabs() {
final int targetSdk = mContext.getApplicationInfo().targetSdkVersion;
if (targetSdk >= Build.VERSION_CODES.JELLY_BEAN) {
return mContext.getResources().getBoolean(R.bool.action_bar_embed_tabs);
}
// The embedded tabs policy changed in Jellybean; give older apps the old policy
// so they get what they expect.
return mContext.getResources().getBoolean(R.bool.action_bar_embed_tabs_pre_jb);
}
Однако я подозреваю, что вам просто не нужна причина, а решение. К сожалению, я не могу дать вам простой способ настроить его только на встроенный.
Я могу предложить использовать ActionBarSherlock, чтобы сделать его непротиворечивым. Бонус к этому - возможность использовать панели действий на старых устройствах. При использовании (портрет) я могу подтвердить, что если вы установите для targetSDK значение 16, оно использует сложный макет на желе Bean, сэндвич с мороженым, GingerBread и Froyo. По крайней мере, вы сможете проектировать свой макет, зная, чего ожидать.
Имейте в виду, что в большинстве случаев переключение в ландшафтный режим снова введет их в панель действий, так как есть "достаточно места", как он измеряет.