中心对齐Android操作栏

时间:2014-08-16 20:58:10

标签: android android-layout

我无法将我的徽标和文字对齐到一个Android项目。这是我的styles.xml:

<resources
    xmlns:android="http://schemas.android.com/apk/res/android"
    >

    <!-- Actionbar style -->
    <style name="Widget.project.ActionBar" parent="Widget.Sherlock.Light.ActionBar">
        <item name="titleTextStyle">@style/Widget.Elmwood.TitleTextStyle</item>
        <item name="android:titleTextStyle">@style/Widget.Elmwood.TitleTextStyle</item>

        <item name="android:background">@color/project_blue</item>
        <item name="background">@color/project_blue</item>
    </style>

    <style name="Widget.Elmwood.TitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Title">
        <item name="android:textColor">@color/white</item>
    </style>

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="@style/Theme.Sherlock.Light.DarkActionBar">

        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->

    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <item name="actionBarStyle">@style/Widget.project.ActionBar</item>
        <item name="android:actionBarStyle">@style/Widget.project.ActionBar</item>
    </style>

    <!-- Buttons -->
    <style name="BlueBackgroundButtonLargeWhiteTextButton" parent="@android:style/Widget.Button">
        <item name="android:background">@color/project_blue</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:textSize">@dimen/title_text</item>
        <item name="android:padding">@dimen/title_text_padding</item>
    </style>

    <style name="InnerCircleDetailButton" parent="@android:style/Widget.Button">
        <item name="android:background">@drawable/inner_circle_button</item>
        <item name="android:textSize">14dp</item>
    </style>

    <style name="InnerCircleContinueButton" parent="@android:style/Widget.Button">
        <item name="android:background">@drawable/black_grey_button_background</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:textSize">@dimen/normal_text</item>
        <item name="android:padding">5dp</item>
    </style>

    <style name="HomepageButton" parent="@android:style/Widget.Button">
        <item name="android:textSize">@dimen/title_text</item>
        <item name="android:layout_centerInParent">true</item>
        <item name="android:background">@null</item>
    </style>
    <!-- end Buttons -->

    <!-- ListViews -->
    <style name="projectBlueListView" parent="@android:style/Widget.ListView">
        <item name="android:cacheColorHint">@android:color/transparent</item>
        <item name="android:background">@color/project_blue_transparent</item>
        <item name="android:divider">@null</item>
        <item name="android:dividerHeight">0px</item>
    </style>

    <style name="StandardListView" parent="@android:style/Widget.ListView">
        <item name="android:cacheColorHint">@android:color/transparent</item>
        <item name="android:divider">@null</item>
        <item name="android:dividerHeight">0px</item>
        <item name="android:listSelector">@android:color/transparent</item>
    </style>
    <!-- end ListViews -->

    <!-- TextViews -->
    <style name="TitleTextView" parent="@android:style/Widget.TextView">
        <item name="android:textSize">@dimen/title_text</item>
    </style>

    <style name="TitleTextViewWhite" parent="@style/TitleTextView">
        <item name="android:textColor">@color/white</item>
    </style>

    <style name="NormalTextView" parent="@android:style/Widget.TextView">
        <item name="android:textSize">@dimen/normal_text</item>
    </style>

    <style name="NormalTextViewBold" parent="@style/NormalTextView">
        <item name="android:textStyle">bold</item>
    </style>

    <style name="NormalTextViewWhite" parent="@style/NormalTextView">
        <item name="android:textColor">@color/white</item>
    </style>

    <style name="NormalTextViewGrey" parent="@style/NormalTextView">
        <item name="android:textColor">@color/project_grey</item>
    </style>

    <style name="projectListItemTitleTextView" parent="@style/NormalTextView">
        <item name="android:textColor">@color/white</item>
        <item name="android:textSize">16dp</item>
    </style>

    <style name="projectListItemNumberTextView" parent="@style/NormalTextView">
        <item name="android:textColor">@color/project_grey</item>
        <item name="android:textSize">30dp</item>
    </style>
    <!-- end TextViews -->


</resources>

我可以做一些修改;例如,如果我删除

<item name="android:background">@color/project_blue</item>
<item name="background">@color/project_blue</item>

我得到了一个纯白色的动作栏,但是我做的任何事情都不允许我改变文本或徽标的对齐方式。两者都需要居中对齐。

我已经找到了解决这个问题的多种解决方案,所有人都说了同样的话。我需要制作一个自定义布局,这是我已有的知识。我对任何XML文件所做的任何更改都不会改变对齐方式。

有人能指出我正确的方向吗?

编辑:

我已经尝试过添加自定义操作栏,但它没有用。虽然我可以让它出现,但它根本不会对中心对齐做出反应。

这是我的onCreate():

getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayUseLogoEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setDisplayShowCustomEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(false);
getSupportActionBar().setDisplayOptions(getSupportActionBar().DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(getLayoutInflater().inflate(R.layout.custom_layout, null));

这是我的custom_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ActionBarWrapper"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:orientation="horizontal"
    >

<ImageButton
    android:id="@+id/slideMenuButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_launcher"
    android:layout_alignParentLeft="true" />

<ImageView
    android:id="@+id/icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/app_icon"
    android:layout_centerVertical="true"
    android:layout_centerInParent="true"  />



</RelativeLayout>

我可以更改图标和内容,因此我知道它至少会对更改做出响应,但尝试对齐它不会产生任何结果。

1 个答案:

答案 0 :(得分:1)

AFAIK无法使用标准操作栏将徽标和标题水平居中。你必须:

  1. 使用完全自定义的ActionBar 或
  2. 将自定义视图添加到模仿徽标+标题的标准操作栏。

    ActionBar actionBar = getActionBar(); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setCustomView(R.layout.your_layout_with_logo_and_title);