我最近开始使用Android编程,一切都很好,花花公子,但是我遇到了一个我无法找到答案的问题,到目前为止,我真的努力了4天。
我的应用使用支持操作栏,并且具体" android.support.v7.app.ActionBarActivity "。长话短说,我无法处理适用于Action Bar的大部分内容。
我的应用程序默认使用此支持操作栏,因为我的迷你sdk版本设置为14。
我希望能够从头开始构建一个操作栏并自定义它,因为默认操作栏无法响应styles.xml等中的自定义。
我不介意使用Holo主题库而不是AppCompat。
这里的问题是,如何使用操作栏而不是支持操作栏? 如何扩展我的java类而不是支持它?
因为所有在线自定义解决方案都不适用于支持操作栏。
有点模糊的描述,所以我为此道歉。
答案 0 :(得分:2)
创建一个新项目,并选择最低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
声明。
试试这个。它会起作用。
答案 1 :(得分:2)
Zygotelnit答案有效但你必须从项目声明中省略[&#34; tools:targetApi =&#34; 11&#34;]否则它会因某些原因给你一个错误。
另一方面,我发现了一个更短,更简单但不那么优化的解决方案。虽然搜索actionBar类并在这里玩,但答案是:
在您的activity.java中,转到
protected void onCreate(Bundle savedInstanceState)
在该方法中适当的任何地方,编写以下代码:
ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new
ColorDrawable(Color.parseColor("#D62D20")));
您可以使用您选择的任何颜色代码替换颜色代码。它显然是一个十六进制颜色代码。