【问题标题】:Center text with dynamic TextView size以动态 TextView 大小居中文本
【发布时间】:2015-05-20 04:32:28
【问题描述】:

我有一个在列表项中右对齐的 TextView。它的背景是一个可绘制的,它只是一个椭圆形。此文本视图用作徽章,它需要是一个圆形(宽度和高度相等)。

我通过运行以下代码来实现这一点:

        textView.setText(badgeCount);
        textView.measure(0, 0);
        ViewGroup.LayoutParams params = textView.getLayoutParams();
        int size = Math.max(textView.getMeasuredWidth(), textView.getMeasuredHeight());
        params.width = size;
        params.height = size;
        badgesCountTextView.setLayoutParams(params);

除了文本左对齐外,此方法有效。我的 xml 看起来像这样:

<RelativeLayout>
...
<TextView
        android:id="@+id/badge_count_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"
        android:paddingBottom="5dp"
        android:paddingTop="5dp"
        android:textSize="15sp"
        android:textColor="@color/white"
        android:layout_alignParentRight="true"
        android:background="@drawable/black_circle"
        tools:text="45"
        android:gravity="center"/>
</RelativeLayout>

我应该如何让我的徽章视图中的文本居中?我无法设置固定的宽度或高度,因为需要根据文本大小动态设置。谁能指出我正确的方向?

【问题讨论】:

  • 据我了解,您正在调整文本视图的大小,因此其背景图像将被拉伸...您使用的是 9patch 吗?如果是这样,请确保您拥有正确的内容位置,因为这会影响中心位置。如果你说重心,你可以删除 xml 上的填充集。

标签: android


【解决方案1】:

将 TextView 的 layout_width 和 layout_height 更改为 fill_parent 并将 TextView 的重力设置为 center,如下所示:

<RelativeLayout>
...
<TextView
    android:id="@+id/badge_count_text_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingLeft="8dp"
    android:paddingRight="8dp"
    android:paddingBottom="5dp"
    android:paddingTop="5dp"
    android:textSize="15sp"
    android:textColor="@color/white"
    android:layout_alignParentRight="true"
    android:background="@drawable/black_circle"
    tools:text="45"
    android:gravity="center"/>
</RelativeLayout>

otherwise, if your TextView is as small as your text, you could not center it easily

【讨论】:

  • 问题是,徽章调整大小以填充整个列表项。我希望它和文本一样大。
  • 第一种方法是使用边距和内边距,但这并不适用于所有设备。第二种方法是将 TextView 放入具有重力 =“center” 的 LinearLayout 或 RelativeLayout
【解决方案2】:

您已将 textview 大小设置为以宽度和高度包装内容。这意味着视图非常小——只有文本的大小。所以它是居中的。您可能想要的是将其宽度设置为 fill_parent,或者设置其 layout_leftAlign 和 rightAlign 或 toLeftOf 和 toRightOf 以使其最终具有更大的尺寸。但是,如果不知道您的布局的其余部分以及您希望它的外观,我们将无能为力。

【讨论】:

    猜你喜欢
    • 2012-11-22
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 2014-02-14
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    相关资源
    最近更新 更多