[英]action bar behavior when android:targetSdkVersion is 16
我正在尝试使用选项卡作为导航选项来实现操作栏。 为此,我选择“New Android App”向导的“New Blank Activity”部分中的“Tabs + Swipe”选项,如下所示。
现在,在android清单中,何时
android:targetSdkVersion="15"
这是默认值,操作栏在Nexus 7 / Nexus 7仿真器上看起来像这样,这是应用程序的理想外观
现在,当我将android清单中的那一行更改为
android:targetSdkVersion="16"
操作栏的外观更改为此
默认外观对于任何版本的android都是16但是,任何人都可以解释为什么当targetSdkVersion设置为16时,操作栏的外观会突然改变?
以上内容可在仿真器和真实连接7中重现。
全屏抓取
正常: http : //i.stack.imgur.com/VsBA2.png
在android:targetSdkVersion =“16”之后: http ://i.stack.imgur.com/OM6Y4.png
更新 - 2013年3月10日:切换到列表导航模式(而不是选项卡)以启用移动到android:targetSdkVersion = 17
将targetSDK设置为16时更改的原因是Google更改了Jelly 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时,它使用在果冻豆,冰淇淋三明治,姜饼和Froyo的堆叠布局。 至少你可以设计你的布局,同时知道会发生什么。
请记住,在大多数情况下,切换到横向模式会将它们再次嵌入操作栏,因为它的测量方式有“足够的空间”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.