我要在我的应用中设计这样的操作栏
我该怎么办?
答案 0 :(得分:1)
第1步。制作如下的XML布局:
<强> my_custom_actionbar_layout.xml 强>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="fill_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/back_button"
android:background="darkgreen"
android:text = "Back"
android:textColor = "#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true" />
<TextView
android:id="@+id/center_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Place"
android:textSize="20sp"
android:textColor="#FFFFFF" />
<Button
android:id="@+id/map_button"
android:background="darkgreen"
android:text = "Map"
android:textColor = "#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true" />
</RelativeLayout>
在上面的布局中,您必须为要使用的深绿色指定十六进制颜色代码(即在android:background="darkgreen"
中必须用所需的十六进制颜色代码替换darkgreen
)。 ActionBar
的背景颜色将在下面指定。
第2步。在所有onCreate()
课程的ActionBarActivity
中,输入以下代码:
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
ActionBar.LayoutParams lp = new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT);
View actionBarView = LayoutInflater.from(this).inflate(R.layout.my_custom_actionbar_layout, null);
actionBar.setCustomView(actionBarView, lp);
注意:如果您仅支持API级别11+,因此使用Activity
代替ActionBarActivity
,则在上面的代码中替换:
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
与
android.app.ActionBar actionBar = getActionBar();
第3步。将以下代码添加到您的所有Activity
课程中:
@Override
public boolean onPrepareOptionsMenu (Menu menu) {
return false;
}
第4步。在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
,使用您在图像中使用的浅绿色的十六进制颜色代码。
注意:如果您使用的是appcompat-v7
库,则上述操作将有效。如果没有,那么您将不得不使用其中一个Holo.Light
主题而不是AppCompat.Light
,并且还会有其他更改。
第5步。在清单文件中,您必须添加:
android:theme="@style/DefaultActionBarTheme"
如果<activity
具有Activity
,则到每个ActionBar
声明。
试试这个。它会起作用。
答案 1 :(得分:0)
按照本教程(https://developer.android.com/training/basics/actionbar/styling.html#CustomBackground),您可以使用简单的drawable更改应用程序操作栏的背景。
然后,你也可以添加小部件,以获得与上面相同的结果(旧的iOS设计?)。