是否可以使 ActionBar 选项卡的高度高于 ActionBar 的高度?如果是这样,怎么做?

Posted

技术标签:

【中文标题】是否可以使 ActionBar 选项卡的高度高于 ActionBar 的高度?如果是这样,怎么做?【英文标题】:Is it possible to make ActionBar tabs height higher than ActionBar height? If so, how? 【发布时间】:2012-05-21 08:48:19 【问题描述】:

我正在使用 ActionBarSherlock

在关于 ActionBar 选项卡高度的类似问题中,我使用了:

<style name="YourTheme" parent="@android:style/Theme.Holo">
   <item name="android:actionBarStyle">@style/blah1</item>
   <item name="android:actionBarTabStyle">@style/blah2</item>
   <item name="android:actionBarSize">80dp</item>
   ..
</style>

我假设我可以在每种样式上使用这个特定属性

<item name="android:actionBarSize">80dp</item>

并从 ActionBar 选项卡高度单独调整 ActionBar 高度。

但它不起作用。

那么,这是我无法覆盖的 Android 设计原则吗?

选项卡必须始终与 ActionBar 高度相同。

【问题讨论】:

【参考方案1】:

我对此不是 100% 的,但根据我的经验,这是无法做到的,android 不允许这样做。也许这会在未来发生变化,但目前对此无能为力。

希望这会有所帮助!

【讨论】:

【参考方案2】:

您是否尝试过使用自定义操作栏?您可以使用单独的布局完全自定义操作栏。

sample 将向您展示如何操作。

【讨论】:

【参考方案3】:

你可以覆盖android的action bar设计原则,我试过了,可能对你有用。

将以下代码复制到styles.xml文件中

<style name="ThemeSelector" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/myTheme.ActionBar</item>
</style>

<style name="myTheme.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">imageforactionbar</item>
    <item name="android:titleTextStyle">@style/myTheme.ActionBar.Text</item>
    <item name="android:height">60dp</item>
</style>

1) 将图片放在drawable文件夹中

2) 在样式 xml 中写入样式主题“myTheme.ActionBar.Text”。

<style name="myTheme.ActionBar.Text" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/white</item>
    <item name="android:textSize">@dimen/app_head</item>
</style>

相应地更改清单文件,包括

android:theme="@style/ThemeSelector" 

在应用标签下。

【讨论】:

【参考方案4】:

您可以覆盖操作栏

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.action_bar);

android:layout_
android:layout_

【讨论】:

【参考方案5】:

不,您不能在 ICS 上更改本机操作栏的大小。原生操作栏的高度始终为 48dip(portrait) 或 40dip(landscape)。

但是如果你坚持改变它的高度,你可以实现你自己的动作栏。

【讨论】:

【参考方案6】:

我们可以从 java 类中的代码或主题中动态创建操作栏:

第 1 步:我们可以更改特定类的操作栏的图像、名称、颜色、高度等,这是一个过程。

    ActionBar actionBar = getActionBar();
   // show the action bar title
    actionBar.setDisplayShowTitleEnabled(true);
    LayoutParams test = new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT, Gravity.CENTER | Gravity.CENTER);
    View actionBarView = LayoutInflater.from(this).inflate(
            R.layout.x, null); // layout which contains your
                                            // button.
    actionBar.setCustomView(actionBarView, test);
    actionBar.setDisplayShowCustomEnabled(true);

    SpannableString s = new SpannableString("Test");
    s.setSpan(new ForegroundColorSpan(Color.parseColor("#ffffff")), 0,
            s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    // Update the action bar title with the TypefaceSpan instance
    actionBar.setTitle(s);

【讨论】:

以上是关于是否可以使 ActionBar 选项卡的高度高于 ActionBar 的高度?如果是这样,怎么做?的主要内容,如果未能解决你的问题,请参考以下文章

显示 ActionBar 选项卡的两个片段

如何垂直居中具有不同高度选项卡的对话框?

TabHost with Activities与ActionBar with Fragments

如何设置 ActionBar 样式,选定选项卡上的选项卡背景

根据选定的选项卡在 ActionBar 中显示和隐藏项目

ActionBar Sherlock ,操作栏选项卡和片段