【问题标题】:How to center text and align drawable to the left?如何使文本居中并将drawable向左对齐?
【发布时间】:2017-08-09 12:50:22
【问题描述】:

有什么方法可以让文本视图中的文本居中,然后让可绘制对象与左侧对齐,以便文本保持居中但可绘制对象不会影响这一点?目前整个文本视图正在居中。

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

您可以在这张图片中看到问题。我希望单词以 Library 为中心。

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

【问题讨论】:

  • 添加一个imageview并添加drawable作为背景并设置imageview重力左。
  • 如果你愿意,我可以创建一个详细的答案。
  • 是的,请! @布鲁诺费雷拉
  • 试试我的代码@benjgorman
  • @benjgorman 为此使用单独的ImageViewTextView 不是更容易吗?

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


【解决方案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 更改为最适合您使用的图像的值。

或者

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

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

这就是输出的样子:

编辑

我现在意识到您面临的问题可能是由于使用ToolBar 时出现的偏移(?)。 This answer 提供了一个很好的解决方案。是这样的

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

在这里,我TextViewImageView 放在 Toolbar 中,因为它会再次稍微向右偏移。相反,我将它放在 Toolbar

【讨论】:

  • 让我弄清楚这一点。您需要一个位于布局中间的TextView(以库为中心)和TextView 旁边的图像?
  • 这解决了它,必须在图像顶部添加一些填充以使其垂直居中,但很好的解决方案
【解决方案2】:

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

android:layout_marginLeft="-10dp" 

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

【讨论】:

【解决方案3】:

我已经完成了我的一个项目 你可以看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"/>

【讨论】:

  • 这段代码应该如何提供帮助?这不是问题中要问的内容。
猜你喜欢
  • 2018-05-12
  • 2013-05-22
  • 2012-01-31
  • 2014-04-24
  • 1970-01-01
  • 2016-01-15
  • 2012-03-26
  • 2017-06-29
  • 1970-01-01
相关资源
最近更新 更多