自定义支持操作栏 / Android
Customizing Support Action Bar / Android
我最近开始 Android 编程,一切都很好,但我遇到了一个我找不到答案的问题,到目前为止我真的很努力地挖掘了 4 天。
我的应用程序使用支持操作栏,具体来说是“android.support.v7.app.ActionBarActivity”。长话短说,我无法处理适用于此支持操作栏的大部分内容。
由于将我的 mini sdk 版本设置为 14,我的应用默认使用此支持操作栏。
我希望能够从头开始构建一个操作栏,并对其进行自定义,因为默认操作栏不响应我在 styles.xml 等方面的自定义
我不介意使用 Holo 主题库而不是 AppCompat。
那么这里的问题是,如何使用Action Bar而不是Support Action Bar?
我怎样才能扩展我的 java class 来使用它而不是支持的?
因为none的在线定制解决方案适用于支持操作栏。
描述有点含糊不清,对此深表歉意。
创建一个新项目,select最低API级别为15。当你这样做时,这个项目将不需要appcompat-v7
库,因为它是minSdkversion
< 15 的项目。在这个项目中,默认使用 类 android.app.ActionBarActivity
和 android.app.ActionBar
,即原生 AOSP 类 而不是那些来自支持库。
在 API 8 级及以上,您可以根据需要使用以下自定义背景颜色的 ActionBar
。
步骤 1. 在您的 res/values
文件夹中,定义一个 XML 文件 theme.xml
并向其中添加以下内容:
<resources
xmlns:tools="http://schemas.android.com/tools">
<style name="DefaultActionBarTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle" tools:targetApi="11">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
<item name="android:actionBarSize" tools:targetApi="11">@dimen/action_bar_wrap_content</item>
<item name="actionBarSize">@dimen/action_bar_wrap_content</item>
</style>
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
<item name="android:background" tools:targetApi="11">@color/actionbarbgcolor</item>
<item name="background">@color/actionbarbgcolor</item>
<item name="android:height" tools:targetApi="11">@dimen/action_bar_wrap_content</item>
<item name="height">@dimen/action_bar_wrap_content</item>
</style>
</resources>
在同一文件夹中制作另一个 XML 文件 colors.xml
并向其中添加以下内容:
<resources>
<color
name="actionbarbgcolor">#00FF00
</color>
</resources>
并在现有文件 dimens.xml
中添加最后一行:
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<!-- Optional, in case you wish to increase the default width of the Action Bar. -->
<dimen name="action_bar_wrap_content">55dp</dimen>
</resources>
代替上面的 #00FF00
,使用十六进制颜色代码作为您希望在 ActionBar
中使用的背景颜色。
注意: 假设您使用的是 appcompat-v7
库,以上内容将起作用。如果没有,那么您将不得不使用 Holo.Light
主题之一而不是 AppCompat.Light
,并且还会有其他变化。
步骤 2. 在您的清单文件中,您必须添加:
android:theme="@style/DefaultActionBarTheme"
每个 <activity
声明如果 Activity
有 ActionBar
.
试试这个。它会起作用。
Zygotelnit 的答案有效,但你必须从项目声明中省略 ["tools:targetApi="11"] 否则它会出于某种原因给你一个错误。
另一方面,我发现了一个更短、更简单但没有那么优化的 solution.While 搜索 actionBar class 并在此处玩弄的答案是:
在您的 activity.java 中,转到
protected void onCreate(Bundle savedInstanceState)
在那个方法的任何合适的地方,写下下面的代码:
ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new
ColorDrawable(Color.parseColor("#D62D20")));
您可以将颜色代码替换为您选择的任何颜色代码。这显然是一个十六进制颜色代码。
我最近开始 Android 编程,一切都很好,但我遇到了一个我找不到答案的问题,到目前为止我真的很努力地挖掘了 4 天。
我的应用程序使用支持操作栏,具体来说是“android.support.v7.app.ActionBarActivity”。长话短说,我无法处理适用于此支持操作栏的大部分内容。
由于将我的 mini sdk 版本设置为 14,我的应用默认使用此支持操作栏。
我希望能够从头开始构建一个操作栏,并对其进行自定义,因为默认操作栏不响应我在 styles.xml 等方面的自定义
我不介意使用 Holo 主题库而不是 AppCompat。
那么这里的问题是,如何使用Action Bar而不是Support Action Bar? 我怎样才能扩展我的 java class 来使用它而不是支持的?
因为none的在线定制解决方案适用于支持操作栏。
描述有点含糊不清,对此深表歉意。
创建一个新项目,select最低API级别为15。当你这样做时,这个项目将不需要appcompat-v7
库,因为它是minSdkversion
< 15 的项目。在这个项目中,默认使用 类 android.app.ActionBarActivity
和 android.app.ActionBar
,即原生 AOSP 类 而不是那些来自支持库。
在 API 8 级及以上,您可以根据需要使用以下自定义背景颜色的 ActionBar
。
步骤 1. 在您的 res/values
文件夹中,定义一个 XML 文件 theme.xml
并向其中添加以下内容:
<resources
xmlns:tools="http://schemas.android.com/tools">
<style name="DefaultActionBarTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle" tools:targetApi="11">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
<item name="android:actionBarSize" tools:targetApi="11">@dimen/action_bar_wrap_content</item>
<item name="actionBarSize">@dimen/action_bar_wrap_content</item>
</style>
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
<item name="android:background" tools:targetApi="11">@color/actionbarbgcolor</item>
<item name="background">@color/actionbarbgcolor</item>
<item name="android:height" tools:targetApi="11">@dimen/action_bar_wrap_content</item>
<item name="height">@dimen/action_bar_wrap_content</item>
</style>
</resources>
在同一文件夹中制作另一个 XML 文件 colors.xml
并向其中添加以下内容:
<resources>
<color
name="actionbarbgcolor">#00FF00
</color>
</resources>
并在现有文件 dimens.xml
中添加最后一行:
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<!-- Optional, in case you wish to increase the default width of the Action Bar. -->
<dimen name="action_bar_wrap_content">55dp</dimen>
</resources>
代替上面的 #00FF00
,使用十六进制颜色代码作为您希望在 ActionBar
中使用的背景颜色。
注意: 假设您使用的是 appcompat-v7
库,以上内容将起作用。如果没有,那么您将不得不使用 Holo.Light
主题之一而不是 AppCompat.Light
,并且还会有其他变化。
步骤 2. 在您的清单文件中,您必须添加:
android:theme="@style/DefaultActionBarTheme"
每个 <activity
声明如果 Activity
有 ActionBar
.
试试这个。它会起作用。
Zygotelnit 的答案有效,但你必须从项目声明中省略 ["tools:targetApi="11"] 否则它会出于某种原因给你一个错误。
另一方面,我发现了一个更短、更简单但没有那么优化的 solution.While 搜索 actionBar class 并在此处玩弄的答案是:
在您的 activity.java 中,转到
protected void onCreate(Bundle savedInstanceState)
在那个方法的任何合适的地方,写下下面的代码:
ActionBar actionBar = getSupportActionBar(); actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#D62D20")));
您可以将颜色代码替换为您选择的任何颜色代码。这显然是一个十六进制颜色代码。