在 TextView 中调整可绘制图像的大小 android
Resize drawable image in TextView android
想知道如何在 LinearLayout
中调整 TextView
xml 中的图像大小。我使用 setCompoundDrawablesWithIntrinsicBounds
方法阅读了一些解决方案,但无法正确解决。
图片如下:
我想缩小徽标的大小。
这是我的 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"/>
尝试:
android:scaleX="0.7"
android:scaleY="0.7"
或
将您的资源包装在定义所需大小的可绘制对象中,类似于:
<?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 >
然后在drawable left中使用它。
只有一种解决方案,即为图像获取图像视图并调整图像大小,但文本显示图像右侧。您使用了以下代码,希望您的问题得到解决..
<?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" />
程序化解决方案:
您可以使用 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
想知道如何在 LinearLayout
中调整 TextView
xml 中的图像大小。我使用 setCompoundDrawablesWithIntrinsicBounds
方法阅读了一些解决方案,但无法正确解决。
图片如下:
我想缩小徽标的大小。
这是我的 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"/>
尝试:
android:scaleX="0.7"
android:scaleY="0.7"
或
将您的资源包装在定义所需大小的可绘制对象中,类似于:
<?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 >
然后在drawable left中使用它。
只有一种解决方案,即为图像获取图像视图并调整图像大小,但文本显示图像右侧。您使用了以下代码,希望您的问题得到解决..
<?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" />
程序化解决方案:
您可以使用 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