如何将文本居中并将drawable对齐到左边?

时间:2017-08-09 12:50:22

标签: android android-layout android-xml android-drawable

我有没有办法在textview中居中文本,然后将drawable与左侧对齐,以便文本保持居中但drawable不影响这个?目前整个文本视图都处于中心位置。

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        android:elevation="4dp">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="MirrorMirror"
        android:textStyle="bold"
        android:drawableLeft="@drawable/ic_mirror_face"
        android:textAlignment="center"
        android:textSize="20sp"
        android:textColor="@android:color/white"
        android:id="@+id/toolbar_title"
        android:layout_gravity="center"/>
</android.support.v7.widget.Toolbar>

您可以在此图片中看到问题。我希望这个词以“图书馆”这个词为中心。

http://imgur.com/a/2xp07

3 个答案:

答案 0 :(得分:1)

我看到这里发布的答案已被删除。该解决方案应该适合您。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="MirrorMirror"
    android:textStyle="bold"
    android:drawableLeft="@mipmap/ic_launcher"
    android:textAlignment="center"
    android:textSize="20sp"
    android:id="@+id/toolbar_title"
    android:layout_gravity="center"
    android:layout_marginRight="10dp"/>  

最后一行是应该做的伎俩。将边距值从10dp更改为适合您正在使用的图像的最佳值。

您可以使用锚定到ImageView的{​​{1}}来获得相同的结果。但是在这种情况下你会有更多的控制,因为drawable的大小不会影响文本的对齐。

TextView

这就是输出的样子:

enter image description here

修改

我现在意识到您遇到的问题可能是由于使用<android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/toolbar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="someText" android:layout_gravity="center"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher" app:layout_anchor="@id/toolbar_title" android:layout_gravity="start|center" app:layout_anchorGravity="start|center"/> </android.support.design.widget.CoordinatorLayout> 时出现的偏移量(?)。 This回答为此提供了一个很好的解决方案。它就像这样

ToolBar

在这里,我<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"> </android.support.v7.widget.Toolbar> <TextView android:id="@+id/toolbar_title" android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="MirrorMirror" android:textStyle="bold"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher" android:layout_toLeftOf="@id/toolbar_title"/> </RelativeLayout> TextView 置于 ImageView内,因为它会再次将其略微偏移到正确的。相反,我将置于 Toolbar

答案 1 :(得分:-1)

我试过这个技巧一些应用程序,也可能对你的情况有所帮助,根据drawable宽度在minus( - )中设置textview的左边距。您可以尝试添加这样的

android:layout_marginLeft="-10dp" 

我知道这不是你问题的确切方法,但有时会有所帮助。

答案 2 :(得分:-1)

我在我的一个项目中完成了 你可以查看here

<LinearLayout
    android:id="@+id/ll_action"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_alignParentTop="true">

    <TextView
        android:id="@+id/btn_save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Save"
        android:drawableLeft="@drawable/ic_done_black_24dp"
        android:drawableStart="@drawable/ic_done_black_24dp"
        android:layout_weight="1"
        android:layout_gravity="center"
        android:gravity="center"
        android:background="@color/colorButtonBg"
        android:textColor="@color/colorInputTextAccent"
        />
    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:background="@color/colorAlphaBlack"
        android:layout_marginTop="2dp"
        android:layout_marginBottom="2dp"
        />
    <TextView
        android:id="@+id/btn_cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cancel"
        android:drawableLeft="@drawable/ic_clear_black_24dp"
        android:drawableStart="@drawable/ic_clear_black_24dp"
        android:layout_weight="1"
        android:gravity="center"
        android:background="@color/colorButtonBg"
        android:textColor="@color/colorInputTextAccent"
        />

</LinearLayout>
可绘制的

ic_done_black_24dp.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
<path
    android:fillColor="#FF000000"
    android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z"/>