使用自定义布局覆盖ActionBar

时间:2014-09-24 13:15:45

标签: android android-actionbar

我正在尝试自定义ActionBar以显示徽标。我首先尝试这样做

actionBar.setIcon(R.drawable.logo);

但是我需要这个更大一些,所以我试图创建一个自定义布局并在默认的actionBar上进行膨胀。

我已经阅读了几个教程,几乎所有教程都在同一个程序中进行了匹配。所以我继续说下去:

custom_actionbar.xml

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/ablogo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="5dp"
        android:src="@drawable/logo" />
</RelativeLayout>

MainActivity.java - &gt; onCreate()方法

actionBar = getSupportActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);

/*Inflate your custom actionBar layout*/
View customActionBar = getLayoutInflater().inflate(R.layout.custom_actionbar, null);

actionBar.setCustomView(customActionBar);

但我意识到自定义操作栏布局没有填满整个操作栏。应该位于左侧的徽标图像位于操作栏的中间,即使未显示默认图标和标题,操作栏仍然无法触及它们的空间。

那么,如何以正确的方式覆盖操作栏并能够在其左侧设置我的徽标图像?

1 个答案:

答案 0 :(得分:0)

    //write to this       
    getActionBar().setDisplayHomeAsUpEnabled(true);
            getActionBar().setHomeButtonEnabled(true);
            getActionBar().setCustomView(R.layout.custom_actionbar);
            getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);


 <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="8dp"
        android:src="@drawable/nav" />