Как изменить размер панели действий
Я хотел бы изменить размер панели действий. Я пробовал следующую кодировку.
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/CustomActionBar</item>
</style>
<style name="CustomActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<!-- <item name="android:background">@drawable/action_bar_style</item> -->
<item name="android:actionBarSize">15dp</item>
<item name="android:background">@drawable/header_bar</item>
</style>
Но размер панели действий не изменился. Есть ли другой способ? Я использую API-уровень 11.
Благодарю.
5 ответов
Использование height
атрибутов, actionBarSize
если для чего-то еще.
<item name="android:height">@dimen/bar_height</item>
Explanantion:
Из исходного кода ActionBar:
mContentHeight = a.getLayoutDimension(R.styleable.ActionBar_height, 0);
Мы это видим R.styleable.ActionBar_height
используется для высоты. Stylable
имена свойств генерируются как component_attribute
(Если вы когда-либо использовали обычай stylable
вид, ты бы это заметил). Следовательно, Actionbar
это имя компонента и height
Имя атрибута для использования. Поскольку это системный атрибут, следовательно, определяется в android
Пространство имен.
Обновление декабря 2014:
Библиотека AppCompat теперь предоставляется для расширения поддержки последних ActionBar (или панели инструментов) и поддержки тем до старых версий Android. Ниже приведен пример такой темы приложения /res/values/styles.xml
:
<resources>
<!-- Application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Main theme colors -->
<!-- your app branding color for the app bar -->
<item name="colorPrimary">@color/primary</item>
<!-- darker variant for the status bar and contextual app bars -->
<item name="colorPrimaryDark">@color/primary_dark</item>
<!-- theme UI controls like checkboxes and text fields -->
<!-- native widgets will now be "tinted" with accent color -->
<item name="colorAccent">@color/accent</item>
<!--Action bar style-->
<item name="android:actionBarStyle">@style/AppTheme.ActionBar</item>
<item name="actionBarStyle">@style/AppTheme.ActionBar</item>
</style>
<style name="AppTheme.ActionBar" parent="Widget.AppCompat.Light.ActionBar">
<item name="android:titleTextStyle">@style/AppTheme.ActionBar.TitleText</item>
<item name="titleTextStyle">@style/AppTheme.ActionBar.TitleText</item>
<item name="android:height">@dimen/bar_height</item>
<item name="height">@dimen/bar_height</item>
</style>
<style name="AppTheme.ActionBar.TitleText" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textSize">@dimen/bar_text_size</item>
<item name="android:textColor">@color/bar_text_color</item>
</style>
</resources>
Этот стиль теперь можно установить как тему приложения с помощью android:theme="@style/AppTheme"
в <application>
тег из AndroidManifest.xml
,
Обратите внимание на использование повторяющихся записей
<item name="android:actionBarStyle">
<item name="actionBarStyle">
Те без android
Пространство имен предназначено для поддержки как библиотеки совместимости, так и собственных атрибутов. Некоторые из этих атрибутов не существовали в пространстве имен Android в более старых версиях и принадлежат вспомогательной библиотеке.
В некоторых других местах вам нужно будет использовать app
пространство имен (xmlns:app="http://schemas.android.com/apk/res-auto"
), например app:showAsAction="always"
в меню xml файлов.
Обновление апрель 2015
Библиотека AppCompat v22 также доступна. Прочитайте статью, чтобы узнать, что нового.
Проще говоря actionBarSize
пункт под стилем MyTheme, как это:
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarSize">15dp</item>
<item name="actionBarSize">15dp</item>
...
</style>
Объяснение:
В R.styleable мы видим, что R.styleable.Theme_actionBarSize
это настраиваемый атрибут, определенный на уровне темы.
Кроме того, из исходного кода res / values / styles.xml мы видим, как actionBarSize
используется для установки height
:
<style name="Widget.ActionBar">
...
<item name="android:height">?android:attr/actionBarSize</item>
Добавьте это к пользовательскому XML-стилю темы, на который вы ссылаетесь из своего файла манифеста:
<item name="android:windowTitleSize">58dip</item>
Например, если ваш файл манифеста выглядит примерно так:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
**android:theme="@style/AppTheme"** >
Ваш стиль темы должен быть как минимум так:
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTitleSize">54dip</item>
</style>
Решение SD не работает для меня. В моем случае я использовал библиотеку AppCompat v-21. И я просто добавляю
android:layout_height="@dimen/actionBarSize"
android:minHeight="@dimen/actionBarSize"
в мой файл макета, и это работает.
Обязательно добавьте код SD в styles.xml, а затем добавьте
android:theme="@style/thin_ab"
к <application>
элемент в основном манифесте. (Я нуб, и мне потребовалось около 2 часов, чтобы выяснить это.)
Есть два способа изменить размер панели действий. 1. Использование файла манифеста.
android:theme="@style/AppTheme1"
2. программно вы можете использовать
public void onCreate(Bundle savedInstanceState) {
setTheme(android.R.style.Theme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}