getSupportActionBar()。setCustomView(view)不会填充整个操作栏

时间:2014-12-03 02:18:28

标签: android android-styles android-actionbar-compat android-actionbaractivity

我正在尝试设置我的应用的自定义视图,而我制作的布局并没有填满整个操作栏。 我尝试了很多样式设置,但没有一个适合我。

这是我的活动代码

View view = getLayoutInflater().inflate(R.layout.actionbar_customized_home, null);
getSupportActionBar().setDisplayShowCustomEnabled(true);
getSupportActionBar().setCustomView(view);

这里的布局设置为视图

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/actionbar_color"
    >
![enter image description here][1]

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="25dp"
        android:layout_centerInParent="true"
        android:scaleType="fitCenter"
        android:src="@drawable/logo"/>



</RelativeLayout>

即使是导航工具等菜单项的背景,我如何将自定义视图作为背景颜色?

我非常感谢帮助

4 个答案:

答案 0 :(得分:20)

您需要在onCreate()

中添加这些内容
getSupportActionBar().setCustomView(new CustomView(this));
getSupportActionBar().setDisplayShowCustomEnabled(true);

答案 1 :(得分:8)

将主容器设置为:

   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_gravity="fill_horizontal"
        android:background="@color/actionbar_color"
        >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="25dp"
            android:layout_centerInParent="true"
            android:scaleType="fitCenter"
            android:src="@drawable/logo"/>

    </RelativeLayout>

重要的部分是应该解决问题的android:layout_gravity="fill_horizontal

修改

如果不起作用,请尝试这样做:

View view = getLayoutInflater().inflate(R.layout.actionbar_customized_home, null);
LayoutParams layout = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
getSupportActionBar().setCustomView(view, layout); 

答案 2 :(得分:0)

自定义视图仅占用导航/向上按钮和溢出菜单之间的区域。要更改背景和其他颜色,请参阅 - https://developer.android.com/training/basics/actionbar/styling.html

答案 3 :(得分:0)

ActionBar.LayoutParams layout = new ActionBar.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        LayoutInflater inflator = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View viewCustom = inflator.inflate(R.layout.custom_searchview_actionbar, null);

        ActionBar actionBar = getSupportActionBar();

        if (actionBar != null) {
            actionBar.setCustomView(viewCustom, layout);
            actionBar.setDisplayShowCustomEnabled(true);
            Log.i("SEARCH", "ACTIONBAR IS NOT NULL");
        } else
            Log.i("SEARCH", "ACTIONBAR IS NULL :((");