[英]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.