在TextView android中调整可绘制图像的大小

时间:2018-03-21 08:30:26

标签: android android-linearlayout textview android-drawable

想知道如何调整TextViewLinearLayout xml内的图片大小。我使用setCompoundDrawablesWithIntrinsicBounds方法阅读了一些解决方案,但无法正确使用。

这是图片:

enter image description here

我想减小徽标的大小。

这是我的TextView代码:

<TextView  
    android:id="@+id/heading"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:drawableLeft="@drawable/android_logo"
    android:drawableStart="@drawable/android_logo"
    android:gravity="top"
    android:padding="16dp"
    android:singleLine="true"
    android:text="@string/heading"
    android:textSize="20dp"
    android:drawablePadding="5dp"/>

3 个答案:

答案 0 :(得分:5)

尝试:

 android:scaleX="0.7"
 android:scaleY="0.7"

将您的资源包装在一个drawable中,该drawable定义了您所需的大小,类似于:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

  <item
      android:drawable="@drawable/icon"
      android:width="@dimen/icon_size"
      android:height="@dimen/icon_size"
      />

</layer-list >

然后在可绘制的左侧使用它。

答案 1 :(得分:2)

只有一种解决方案可以拍摄图像的图像视图并调整图像大小但文本显示图像右侧。你使用下面的代码,我希望你的问题得到解决..

<?xml version="1.0" encoding="utf-8"?>

<ImageView
    android:id="@+id/icon"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:src="@drawable/ic_person" />

<TextView
    android:id="@+id/heading"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:drawablePadding="5dp"
    android:gravity="top"
    android:padding="5dp"
    android:singleLine="true"
    android:text="heading"
    android:textSize="20dp"
    app:layout_constraintLeft_toRightOf="@+id/icon" />

答案 2 :(得分:0)

程序化解决方案:

您可以使用drawable.setBounds,但它需要像素而不是dp作为参数。

如何转换:Converting pixels to dp

代码:

        Drawable drawable = getDrawable(R.drawable.ic_your_drawable);
        int size = dp2px(this, dpSize);
        if (drawable != null) {
            drawable.setBounds(0, 0, size, size);
        }

        textView.setCompoundDrawables(drawable, drawable, drawable, drawable); // should be (drawable, null, null, null) for you