Android:带有文本视图的工具栏不太对中

时间:2016-07-04 21:21:05

标签: android android-toolbar

我遇到了在工具栏中居中文本视图的问题。

当文字太长时,它看起来像这样

enter image description here

正如您所看到的那样,文字略微偏向右侧,或者左侧导航图标有一些填充。

下图中的布局范围

enter image description here

当文字很小时很好

enter image description here

同样,如果可选徽标可见(扳手只是占位符),则第一张图片中显示的文字显示正常

enter image description here

这是代码。如果您需要查看其他内容,请发表评论

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.ersen.toolbarcentreproblem.MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        android:background="@color/colorPrimary">


        <ImageView
            android:id="@+id/logo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:padding="10dp"
            android:visibility="gone"
            app:srcCompat="@drawable/ic_build_black_24dp"
            tools:visibility="visible"/>

        <TextView
            android:text="Set Holiday Set Holiday Set Holiday Set Holiday"
            android:textColor="@android:color/white"
            android:textAllCaps="true"
            android:layout_gravity="center"
            android:maxLines="1"
            android:ellipsize="end"
            android:gravity="center"
            android:textSize="18sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </android.support.v7.widget.Toolbar>



    <TextView
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Hello World!" />
</LinearLayout>

MainActivity

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        toolbar.setNavigationIcon(R.drawable.ic_menu);
    }
}

我尝试了什么

  • contentInsetLeft
  • contentInsetRight
  • contentInsetEnd
  • contentInsertStart

工具栏上的所有设置为0dp都没有效果

我也尝试在文本视图上应用填充,但是当文本较小时会导致问题。

编辑1:TextView宽度设置为match_parent

同样的问题

enter image description here

编辑2:尝试Narendra Sorathiya解决方案

enter image description here

2 个答案:

答案 0 :(得分:0)

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:visibility="visible"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<TextView
    android:id="@+id/tvTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:layout_gravity="center"
    android:gravity="center_vertical"
    android:text="My Events"
    android:singleLine="true"
    android:textColor="@color/white"
    android:textSize="18sp"
    android:textStyle="bold" />

答案 1 :(得分:0)

我正在探索@Mike M所说的关于制作

的内容
  

只需将您的徽标ImageView的可见性设置为隐身而不是

在我的工具栏中,我有这个

<ImageView
    android:id="@+id/logo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end"
    android:padding="10dp"
    android:visibility="gone"
    app:srcCompat="@drawable/ic_build_black_24dp"
    tools:visibility="visible"/>

<android.support.v4.widget.Space
    android:id="@+id/space"
    android:layout_width="25dp"
    android:layout_height="25dp"
    android:layout_gravity="end"
    android:visibility="gone"
    tools:visibility="visible"/>

<TextView        
    android:id="@+id/toolbar_title"
    android:text="Set Holiday Holiday Set Set S"
    android:textColor="@android:color/white"
    android:textAllCaps="true"
    android:gravity="center"
    android:layout_gravity="center"
    android:layout_centerInParent="true"
    android:maxLines="1"
    android:ellipsize="end"
    android:textSize="18sp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

注意空间小部件

onResumeMainActivity我有这个逻辑

 @Override
    protected void onResume() {
        super.onResume();
        if (mLogo.getVisibility() == View.VISIBLE || mToolbar.getMenu().size() > 0) {
            mSpace.setVisibility(View.GONE);
            return;
        }

        mSpace.setVisibility(View.VISIBLE);
    }

如果徽标可见或工具栏中有菜单项,则会隐藏空间视图,否则会将其设置为可见。

这已经解决了我的问题,文本现在在所有情况下都显示为中心。

这个

有一个问题
mToolbar.getMenu().size() > 0

由于此代码是活动的onResume,因此它将在片段的onCreateOptionsMenu之前调用,因此当它实际上为真时它可能会结束为假,我将更多地探索这个< / p>