Actionbar有额外的视图

时间:2015-04-24 08:29:58

标签: android android-actionbar drawerlayout

我有一个操作栏,左侧有一些我无法删除或找到的内容。

这是它的样子: enter image description here

我将动作栏的背景设为白色以查看差异。

以下是操作栏的代码:

ActionBar actionBar = getSupportActionBar();

mCustomAB = getLayoutInflater().inflate(R.layout.action_bar, null);
ActionBar.LayoutParams lp = new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT, Gravity.LEFT| Gravity.CENTER_VERTICAL);

actionBar.setCustomView(mCustomAB, lp);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

actionBar.setHomeButtonEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setIcon(android.R.color.transparent);

这里是操作栏的整个布局:

<?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="fill_parent"
    android:background="@color/White">

    <ImageButton
        android:id="@+id/drawer_right"
        android:layout_width="60dp"
        android:layout_height="match_parent"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_gravity="end"
        android:background="@null"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:paddingTop="4dp"
        android:scaleType="centerInside"
        android:src="@drawable/ic_alerts" />

    <ImageView
        android:id="@+id/alert_red"
        android:layout_width="@dimen/alert_dimen"
        android:layout_height="@dimen/alert_dimen"
        android:layout_alignRight="@+id/drawer_right"
        android:layout_alignTop="@+id/drawer_right"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:src="@drawable/ic_alert_red" />

    <TextView
        android:id="@+id/alert_counter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/alert_red"
        android:layout_alignTop="@+id/alert_red"
        android:background="@android:color/transparent"
        android:text="1"
        android:textColor="@color/White" />

    <ImageButton
        android:id="@+id/other_options"
        android:layout_width="60dp"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_gravity="end"
        android:background="@null"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:paddingTop="4dp"
        android:scaleType="centerInside"
        android:src="@drawable/ic_dropdown" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/action_bar_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="SM MOON"
            android:textColor="@color/Theme"
            android:textSize="20sp" />

    </LinearLayout>


</RelativeLayout>

顺便说一下,放置它的主要活动是抽屉布局。不确定它是否对它有任何影响。我也尝试为主要布局添加不同的bg颜色,但没有发生任何事情。

提前致谢!

2 个答案:

答案 0 :(得分:2)

这是新的Android ToolBar。添加

<style name="AppThemeToolbar" parent="Widget.AppCompat.Toolbar">
    <item name="contentInsetStart">0dp</item>
    <item tools:ignore="NewApi" name="android:contentInsetStart">0dp</item>
</style>

到你的风格,以删除额外的填充

答案 1 :(得分:0)

尝试以下代码,它可能会帮助您

LayoutInflater m_inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        ActionBar m_actionBar = getSupportActionBar();
        View m_viewActionBar = m_inflater.inflate(R.layout.custom_actionbar_title_layout, null);
        ActionBar.LayoutParams m_params = new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.MATCH_PARENT, Gravity.CENTER);
        TextView m_tvTitle = (TextView) m_viewActionBar.findViewById(R.id.cal_tvActionbarTitle);
        m_tvTitle.setText(p_title);
        m_actionBar.setCustomView(m_viewActionBar, m_params);
        m_actionBar.setDisplayShowCustomEnabled(true);
        m_actionBar.setDisplayShowTitleEnabled(false);
        m_actionBar.setDisplayHomeAsUpEnabled(false);
        m_actionBar.setHomeButtonEnabled(false);

这是我的自定义操作栏布局文件,您可以根据需要进行更改

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:gravity="center"
              android:orientation="vertical" >

    <TextView
        android:id="@+id/cal_tvActionbarTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textColor="@color/white"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textStyle="bold" />

</LinearLayout>

Style.xml的代码

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="actionBarStyle">@style/MyActionBar</item>
        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <!-- Customize your theme here. -->
    </style>

    <!-- ActionBar styles -->
    <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@color/actionbar_bg</item>
        <item name="background">@color/actionbar_bg</item>
        <item name="android:homeAsUpIndicator">@drawable/ic_backarrow</item>
        <item name="homeAsUpIndicator">@drawable/ic_backarrow</item>
    </style>

</resources>