繁体   English   中英

android:targetSdkVersion为16时的操作栏行为

[英]action bar behavior when android:targetSdkVersion is 16

我正在尝试使用选项卡作为导航选项来实现操作栏。 为此,我选择“New Android App”向导的“New Blank Activity”部分中的“Tabs + Swipe”选项,如下所示。

Tab + Swipe向导选项

现在,在android清单中,何时

android:targetSdkVersion="15"

这是默认值,操作栏在Nexus 7 / Nexus 7仿真器上看起来像这样,这是应用程序的理想外观

默认行为

现在,当我将android清单中的那一行更改为

android:targetSdkVersion="16"

操作栏的外观更改为此

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM