簡體   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