sherlock Actionbar中的自定义平铺背景

时间:2013-05-02 05:00:19

标签: android actionbarsherlock titlebar custom-titlebar

正在使用sherlock actionbar创建一个应用..在这里我想要为我的自定义title_background充气......

这是我需要的....... enter image description here

这是我的title_background_layout

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:gravity="center"
android:paddingLeft="5dip"
android:background="@drawable/titlebar">

<ImageView
    android:id="@+id/header"
    android:src="@drawable/netmd"
    android:layout_width="140dp"
    android:layout_height="40dp"/>

我在主要活动中设置了一些背景....

public class MainActivity extends SherlockActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);      
    setContentView(R.layout.activity_main);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_background);      
}

但是在logcat中显示了一些错误。

 05-02 10:17:36.302: E/AndroidRuntime(706): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.netmdapp1/com.example.netmdapp1.MainActivity}:

android.util.AndroidRuntimeException: You cannot combine custom titles with other title features

enter image description here

after editing my code

我找到另一个解决方案,再创造我自己的风格......

我的样式xml文件是....

<style name="CustomActioBar" parent="Widget.Sherlock.ActionBar">
        <item name="android:background">@drawable/titlebar</item>
        <item name="background">@drawable/titlebar</item>
    </style>
    <!-- Application theme. -->

    <style name="AppTheme" parent="Theme.Sherlock.Light">
        <item name="actionBarStyle">@style/CustomActioBar</item>


    </style>

但它仅适用于Android 2.3.3版本,它不适用于更高版本。

没有它不能在我的手机上工作.......

enter image description here

1 个答案:

答案 0 :(得分:2)

如果要为sherlock操作栏设置CustomView,请遵循以下代码

final ActionBar ab = getSupportActionBar();        
ab.setDisplayShowCustomEnabled(true);

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.title_background, null);
ab.setCustomView(view);

编辑: 如果您不想显示徽标和标题,只需添加这些参数以及操作栏的上述代码

ab.setDisplayHomeAsUpEnabled(false);
ab.setDisplayShowHomeEnabled(false);
ab.setDisplayShowTitleEnabled(false);