10

私の目標はActionBar、ポートレートモードの高さを上げることです。私は現在設定しています

android:actionBarSize

私のThemes.xmlで。

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="DayTheme" parent="android:style/Theme.Holo.Light">
        <item name="android:actionBarSize">@dimen/actionBarHeight</item>
        <item name="android:actionBarTabTextStyle">@style/tab_indicator_text_dark</item>
    </style>
    <style name="NightTheme" parent="android:style/Theme.Holo">
        <item name="android:actionBarSize">@dimen/actionBarHeight</item>
        <item name="android:actionBarTabTextStyle">@style/tab_indicator_text_light</item>
    </style>
</resources>

ActionBar高さを80dpに上げたランドスケープモードで目的の効果が得られます。

ここに画像の説明を入力してください

しかし、画面をポートレートモードに回転させると、高さがそのように変化します。

ここに画像の説明を入力してください

コードで次の呼び出しを行うことに注意してください。

final ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayShowTitleEnabled(false);
bar.setDisplayShowHomeEnabled(false);

私はAndroid4.2を搭載したNexus7で開発しています。

ポートレートモードでランドスケープモードと同じ80dpの高さを取得するにはどうすればよいですか?

4

1 に答える 1

10

あなたが書いた:

ポートレートモードでランドスケープモードと同じ80dpの高さを取得するにはどうすればよいですか?

テーマ属性スタイル属性(または)の両方を80dipに設定します。Applicationandroid:actionBarSize ActionBar.TabViewandroid:minHeightheight

基本的な例:

<style name="ThemeHoloWithActionBar" parent="android:Theme.Holo.Light">
    <item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item>
    <item name="android:actionBarSize">80dip</item>
</style>

<style name="ActionBarTabStyle" parent="@android:style/Widget.Holo.ActionBar.TabView">
    <item name="android:minHeight">80dip</item>
</style>

マニフェストでテーマを設定します。

   <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/ThemeHoloWithActionBar" >

アクティビティのアクションバーにいくつかのタブを追加します。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ActionBar actionbar = getActionBar();
    actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    actionbar.setDisplayShowTitleEnabled(false);
    actionbar.setDisplayShowHomeEnabled(false);
    ActionBar.Tab tabA = actionbar.newTab().setText("Tab A");
    ActionBar.Tab tabB = actionbar.newTab().setText("Tab B");
    ActionBar.Tab tabC = actionbar.newTab().setText("Tab C");

    tabA.setTabListener(new MyTabsListener());
    tabB.setTabListener(new MyTabsListener());
    tabC.setTabListener(new MyTabsListener());

    actionbar.addTab(tabA);
    actionbar.addTab(tabB);
    actionbar.addTab(tabC);
}

これにより、ポートレートモードでディップの高さが80のタブが生成されます。

ここに画像の説明を入力してください

ランドスケープモードでのディップ高さが80のタブ:

ここに画像の説明を入力してください

編集:

この例では、マニフェストのSDKバージョンは次のように設定されています。

android:minSdkVersion="12"
android:targetSdkVersion="15"

OPによると、この例はこれらのSDK設定で機能します。ただし、targetSkdVersionが代わりに16または17に設定されている場合、この例は機能しません。OPはバグレポートを提出しました:

于 2012-12-19T11:41:02.347 に答える