【问题标题】:Constrain drawableLeft and drawableRight's height to TextView's height将 drawableLeft 和 drawableRight 的高度约束为 TextView 的高度
【发布时间】:2023-03-13 06:15:02
【问题描述】:

我有以下TextView

<TextView
    android:drawableLeft="@drawable/loading"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Updating Rates" />

结果是这样的:

如何使加载圆可绘制成比例约束,使其高度与文本高度匹配?

另外,如果可能的话,我想在文本和图像之间添加一些间距。

【问题讨论】:

    标签: android textview drawable


    【解决方案1】:

    要缩小loading,只需缩小图像即可。

    或使用RelativeLayout 并将负载放入ImageView 并对其进行缩放。

    或者您可以使用android:drawablePadding(或setCompoundDrawablePadding())在可绘制对象和文本之间添加填充:

    android:drawablePadding="3dp"
    

    【讨论】:

    • “使图像更小” - 帮帮我。谢谢。
    • @offset 调整图像大小(Photoshop、GIMP、在线工具等)
    • 这就是我说的,我缩小了图像,它解决了我的问题。
    • “只是让图像更小”那么对于兼容性 +11k 设备来说有多小?
    • @iLoveUnicorns 缩放后的图像应进入各种缩放的可绘制文件夹 drawable-mdpi 用于 160dpi,drawable-xhdpi 用于 320 dpi 等。所有尺寸请参见此处:developer.android.com/guide/practices/…
    【解决方案2】:

    我想我找到了解决方案,但有点晚了

    Drawable drawable = getResources().getDrawable(R.drawable.s_vit);
    drawable.setBounds(0, 0, (int)(drawable.getIntrinsicWidth()*0.5),(int)(drawable.getIntrinsicHeight()*0.5));
    ScaleDrawable sd = new ScaleDrawable(drawable, 0, scaleWidth, scaleHeight);
    Button btn = findViewbyId(R.id.yourbtnID);
    btn.setCompoundDrawables(sd.getDrawable(), null, null, null); 
    

    【讨论】:

      【解决方案3】:

      Ravi 的解决方案对我有用,但在某些设备上 drawable 正在消失。通过移除缩放来解决此问题。

          int bound = (int) (drawable.getIntrinsicWidth() * 0.5);
          drawable.setBounds(0, 0, bound, bound);
          b.setCompoundDrawables(drawable, null, null, null);
      

      【讨论】:

        【解决方案4】:

        更好的解决方案是在可绘制文件夹中创建一个 XML 并将图像添加到此 XML,并将 scaleType 保持为“fitXY”。现在您可以将此 XML 设置为 drawableLeft。

        【讨论】:

        • 你能补充更多细节吗?也许是一个示例 XML 文件?
        • 我试过了,但它不起作用。您不能通过可绘制文件夹中的 XML 设置 的大小。 scaleType="fitXY" 适用于 ImageViews 而不是 drawables。我去缩放图像并将它们放入各种 drawable-mdpi、drawable-xhdpi 文件夹中。
        【解决方案5】:

        你只需要声明两个独立的视图imageview和textview,并进行相应的设置

        【讨论】:

        • 是的,但有时在 TextView 内需要 drawableRight 以供单击侦听器使用(如日历选择器图标)。所以单独设置会是个问题。
        • 把它们放在一个LinearLayout中,并在Layout上设置点击。问题解决了!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-27
        • 1970-01-01
        • 2017-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多