11

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

这是我的活动代码

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"
    >

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



</RelativeLayout>

甚至像 navdrawer 这样的菜单项的背景,我怎样才能将我的自定义视图设置为背景颜色?

我非常感谢您的帮助

4

4 回答 4

23

这就是您需要添加的所有内容onCreate()

getSupportActionBar().setCustomView(new CustomView(this));
getSupportActionBar().setDisplayShowCustomEnabled(true);
于 2015-05-20T20:51:42.197 回答
10

将您的主容器设置为:

   <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); 
于 2014-12-03T02:27:54.910 回答
1

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

于 2014-12-03T02:37:21.903 回答
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 :((");
于 2019-01-21T08:48:39.553 回答