android-为 Chip 文本添加顶部填充

标签 android android-layout material-design android-chips

我在我的 Android 应用程序中使用 material 库中的 Chip 组件。它是一个 Action 芯片,里面有一个图标和一个文本。重点是我需要在文本顶部添加一些填充,以便将其降低一点。

我尝试向芯片添加 textAppearance 样式,但找不到任何样式项来完成我需要的操作。如何做到这一点?!

        <com.google.android.material.chip.Chip
        android:id="@+id/chip"
        android:layout_width="wrap_content"
        app:chipIcon="@drawable/satisfied"
        app:chipIconTint="#444"
        android:layout_height="wrap_content"
        android:text="my text!"
        android:textAppearance="@style/Widget.App.Chip" />


    <style name="Widget.App.Chip" parent="Widget.MaterialComponents.Chip.Action">
    <item name="android:textSize">14dp</item>
    <item name="android:fontFamily">@font/xyz</item>
    <item name="android:textStyle">bold</item>
    // what item is needed to achieve top padding?!
    </style>

最佳答案

很简单:你不能。 Chip 按原样设计,它扩展了 AppCompatCheckBox 和进一步的 TextView (doc HERE )。所以左侧和/或右侧的这些图标是 compound drawables ,而不是分隔 View(例如 ImageView),因此您设置为 Chip 的每个填充都会向文本和所有图标添加填充(如这是一个View)。出于您的目的,您必须创建自己的自定义 View,最简单的方法可能是使用子项创建水平 LinearLayout:TextViewImageView 位于其左侧和右侧,然后您可以仅为文本设置额外的填充

关于android-为 Chip 文本添加顶部填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63918448/

相关文章:

android - 外围设备模式下的 Nexus 9 不接受来自客户端的连接或不响应客户端请求?

java - 是什么导致我的输出如此困惑?

android - 什么是 paddingStart 和 paddingEnd?

android - 如何在 Android 中保存以编程方式创建的 TextView

android-layout - 如何忽略子元素中的 ConstraintLayout 填充

android - 当我在拦截器中抛出异常时改造崩溃

java - 如何从 TextView 结果获取值到 Alertdialog

android - 列表过滤与 Material Design 兼容?

css - Angular Material Design 如何垂直填充列

javascript - 折叠时更改同一级别上的前一个图标