自定义操作栏中的对齐方式

时间:2015-10-12 10:54:09

标签: android android-actionbar

我创建了一个自定义操作栏

ActionBar actionBar = getActivity().getActionBar();
    actionBar.setCustomView(R.layout.action_bar_draft);
    actionBar.setDisplayShowCustomEnabled(true);
    actionbarFeed = (TextView) actionBar.getCustomView().findViewById(R.id.textView_blogtest);  
    actionbarFeed.setText("My Photos and videos");

问题是文本视图不对齐中心

enter image description here

在我的布局中,文本视图位于中心。当它来到动作栏时,它会转移到右侧。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
    android:id="@+id/relativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true" >

    <TextView
        android:id="@+id/textView_blogtest"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#000" />
</RelativeLayout>

 <style name="AppTheme.ActionBarStyle" parent="@style/Widget.Sherlock.ActionBar.Solid">
    <item name="android:icon">@drawable/menu</item>
    <item name="android:background">#ffca36</item>
    <item name="background">#f66605</item>
    <item name="android:customNavigationLayout">@layout/action_bar</item>
</style>

3 个答案:

答案 0 :(得分:0)

在这里寻找答案:How to center align the ActionBar title in Android?

基本上你应该改变动作栏的xml文件。

修改

发布操作栏的xml文件以获得更精确的答案......

<强> EDIT2:
我不知道。但是需要进行调试:将textview的背景颜色设置为另一种颜色并发布其截图。通过此,您可以查看问题是textview的内容是错误的,还是整个textview未正确放置。

也许你只需要一行

android:gravity="center"

TextView

答案 1 :(得分:0)

请使用以下功能设置操作栏

public void setMainScreenActionBar(String p_title)
{

        LayoutInflater m_inflator = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        ActionBar m_actionBar = getSupportActionBar();
        View m_viewActionBar = m_inflator.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.title);
        m_tvTitle.setText(p_title);
        m_actionBar.setCustomView(m_viewActionBar, m_params);
        m_actionBar.setDisplayShowCustomEnabled(true);
        m_actionBar.setDisplayShowTitleEnabled(false);
        m_actionBar.setDisplayHomeAsUpEnabled(true);
        m_actionBar.setHomeButtonEnabled(true);
}

custom_actionbar_title_layout.xml

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

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:paddingTop="10dp"
        android:textColor="@android:color/black"
        android:textSize="18sp"
        android:textStyle="bold" />

</LinearLayout>

在style.xml中写下以下代码

<resources>

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


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

</resources>

答案 2 :(得分:0)

onCreate()方法中:

    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
LayoutInflater mInflater = LayoutInflater.from(context);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setCustomView(mInflater.inflate(R.layout.custom_layout, null),
    new ActionBar.LayoutParams(
        ActionBar.LayoutParams.WRAP_CONTENT,
        ActionBar.LayoutParams.MATCH_PARENT,
        Gravity.CENTER
));

custom_layout

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Your title"
        android:textColor="#ffffff"
        android:id="@+id/mytext"
        android:textSize="14dp" />

</LinearLayout>

然后你会得到一个只有标题的Actionbar