带有背景图片的自定义 ActionBar
Custom ActionBar with a background image
我一直在尝试制作一个 ActionBar。起初我决定只将它绘制为图像(下图中的第二个 actionBar),但注意到在某些设备上图像不会占据整个屏幕宽度。至于原来的 ActionBar,我在我的主要 Activity onCreate 方法中使用了这段代码:
final ActionBar actionBar = getActionBar();
@SuppressWarnings("deprecation")
BitmapDrawable background = new BitmapDrawable (BitmapFactory.decodeResource(getResources(), R.drawable.actionbar));
actionBar.setBackgroundDrawable(background);
//actionBar.setIcon(android.R.color.transparent);
actionBar.setDisplayShowTitleEnabled(false);
第一个 ActionBar 有一个浅色主题,图像被拉伸。我怎样才能让它变得透明,有没有办法设置 ActionBar 的高度,这样它看起来就不会那么拉伸了?我也试过用样式来做这个并且得到了相同的结果。
编辑 我遵循了 vinitius 的回答,所以我现在有了这个:result 图像是 482x104 而我的 phone 是 480x800。这与将其用作纯图像时发生的问题相同。图像在 drawable-hdpi 文件夹中。
编辑 2 通过将 android:scaleType="fitXY" 添加到 ImageView 将使整个图像拉伸。
actionbar_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00000000"
android:orientation="vertical" >
<View
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#3383A8" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:src="@drawable/actionbar" />
</RelativeLayout>
编辑 3 如果我将图像添加为 RelativeLayout 背景,它会填充不适合较大设备的整个宽度。如果我在更大宽度的设备上将它用作图像,它将被拉伸。 Image
您可以设计自己的 actionBar
视图,甚至可以从任何 xml 对其进行膨胀,然后只需:
getActionBar().setCustomView(yourView);
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
要调整栏的高度,您可以这样做:
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<!-- the height you desire according to your dimen -->
<item name="android:height">@dimen/action_bar_height</item>
</style>
然后,应用您的主题。对我有用
我一直在尝试制作一个 ActionBar。起初我决定只将它绘制为图像(下图中的第二个 actionBar),但注意到在某些设备上图像不会占据整个屏幕宽度。至于原来的 ActionBar,我在我的主要 Activity onCreate 方法中使用了这段代码:
final ActionBar actionBar = getActionBar();
@SuppressWarnings("deprecation")
BitmapDrawable background = new BitmapDrawable (BitmapFactory.decodeResource(getResources(), R.drawable.actionbar));
actionBar.setBackgroundDrawable(background);
//actionBar.setIcon(android.R.color.transparent);
actionBar.setDisplayShowTitleEnabled(false);
第一个 ActionBar 有一个浅色主题,图像被拉伸。我怎样才能让它变得透明,有没有办法设置 ActionBar 的高度,这样它看起来就不会那么拉伸了?我也试过用样式来做这个并且得到了相同的结果。
编辑 我遵循了 vinitius 的回答,所以我现在有了这个:result 图像是 482x104 而我的 phone 是 480x800。这与将其用作纯图像时发生的问题相同。图像在 drawable-hdpi 文件夹中。
编辑 2 通过将 android:scaleType="fitXY" 添加到 ImageView 将使整个图像拉伸。
actionbar_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00000000"
android:orientation="vertical" >
<View
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#3383A8" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:src="@drawable/actionbar" />
</RelativeLayout>
编辑 3 如果我将图像添加为 RelativeLayout 背景,它会填充不适合较大设备的整个宽度。如果我在更大宽度的设备上将它用作图像,它将被拉伸。 Image
您可以设计自己的 actionBar
视图,甚至可以从任何 xml 对其进行膨胀,然后只需:
getActionBar().setCustomView(yourView);
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
要调整栏的高度,您可以这样做:
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<!-- the height you desire according to your dimen -->
<item name="android:height">@dimen/action_bar_height</item>
</style>
然后,应用您的主题。对我有用