10

我有一个宽度为 100dp 的芯片,但文本没有居中,我如何才能使文本居中。

我将androidx与材料库一起使用,我尝试过putandroid:textAlignment="center"android:gravity="center"不起作用

<com.google.android.material.chip.Chip
    android:id="@+id/chip"
    style="@style/Widget.MaterialComponents.Chip.Choice"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:text="7:00" />

我有这个

芯片

我要这个

在此处输入图像描述

4

4 回答 4

23

刚才我遇到了同样的问题,我通过设置一个芯片属性来解决它:android: textAlignment = "center". 我测试了您的示例,它也可以正常工作,这里是我测试的代码:

<FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <com.google.android.material.chip.Chip
            android:id="@+id/chip"
            style="@style/Widget.MaterialComponents.Chip.Choice"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="7:00"
            android:textAlignment="center"/>
</FrameLayout>

还要确保您没有在代码中的某处设置或更改芯片的文本对齐方式。

于 2019-12-31T03:47:11.463 回答
3

简短的回答:

芯片的使用方式并不适合您尝试使用它们的方式。他们应该包装您的内容。因此,没有一种干净的方法可以将文本对齐在中心。有一个解决方法,您可以使用Chip_textEndPaddingChip_textStartPadding属性,我猜这会有点尴尬。

我真的不知道您要达到什么目的,我的意思是,您的原因是什么?是按钮吗?假设只是显示一些文字? 请描述该功能,或至少描述其中的一部分。

反正:

根据材料设计指南

芯片允许用户输入信息、进行选择、过滤内容或触发操作。筹码应该动态地显示为一组多个交互元素。与按钮不同,按钮应该是一致且熟悉的号召性用语,用户希望在相同的一般区域中显示为相同的操作。

您的功能与此有关吗?

如果你想要一个可点击的圆形组件,你可以简单地使用material button

github上提出了一个类似的问题。

于 2019-08-31T15:24:50.903 回答
0

正如其他人所说,您可以使用 textAlignment ...但我想告诉您,如果您使用自定义字体,它将不会完全垂直对齐。你可以在这里查看解释。

所以我会制作一个继承自芯片样式的自定义样式,并设置字体填充以供使用,如下所示:

 <style name="customStyle" parent="@style/Widget.MaterialComponents.Chip.Choice">
    <item name="chipBackgroundColor">@color/white</item>

   ******* <item name="android:includeFontPadding">true</item> *************
  </style>

然后对于文本外观,您可以制作另一种样式:

<style name="CustomChipTextAppearance" parent="TextAppearance.MaterialComponents.Chip">
    <item name="android:fontFamily">?attr/myFont</item>
    <item name="android:textAlignment">center</item>
  </style>

不要忘记在 xml 中强制设置桥接主题:

    <com.google.android.material.chip.Chip xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      style="@style/customStyle"
      ****  android:theme="@style/Theme.MaterialComponents.Bridge" ****
***** android:textAppearance="@style/CustomChipTextAppearance"  *******
      app:chipMinHeight="38dp"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      app:chipStrokeWidth="2dp" 
      app:rippleColor="@android:color/transparent"
      tools:chipText="my chip" />
于 2021-04-19T18:49:21.327 回答
0

isTextAlignmentResolved例如,使用chipname.isTextAlignmentResolved()以编程方式执行此操作。

于 2020-11-20T16:27:39.040 回答