是否可以使 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 的高度?如果是这样,怎么做?的主要内容,如果未能解决你的问题,请参考以下文章
TabHost with Activities与ActionBar with Fragments