android - Android setCompoundDrawablePadding 不起作用
问题描述
我的布局中有一个 TextInputEditText,我需要在其中添加一个可绘制端。可绘制端出现了,但我无法为其添加可绘制填充端。
以下是我尝试过的一段代码:
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.drawable.error), null);
editText.setCompoundDrawablePadding(getResources().getDimensionPixelSize(R.dimen.image_padding));
解决方案
如getResources().getDrawable
已弃用,最好改为使用ContextCompat.getDrawable()
。如果drawablePadding
没有改变并且没有必要以编程方式处理它,请尝试在xml
文件中设置它。
editText.setCompoundDrawablesWithIntrinsicBounds(
null,
null,
ContextCompat.getDrawable(context, R.drawable.error),
null
);
在布局 xml 中:
<android.support.design.widget.TextInputEditText
android:id="@+id/editText"
...
android:drawablePadding="@dimen/image_padding"
/>
.
如果您使用的是android 矢量可绘制对象并希望向后兼容低于 21 的 API,请添加以下代码段。
在应用级 build.gradle 中:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
在应用程序类中:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
}
推荐阅读
- excel - 全局公共字符串变量在 subs 之间失去价值
- c# - 从 .NET 连接器首次调用 Snowflake 非常慢
- c# - 是否可以在 C# 上的阅读器中剪切前四个字符
- flutter - Flutter Text:数字显示在圆圈内
- python - PyMODM 获取没有 _cls 的对象
- android - 我想创建一个将手机摄像头/麦克风连接到电脑的应用程序
- c - C:读取输入时停止后台进程
- javascript - 发送带有呼叫功能的 dropzone
- php - 给定打破规则的最大堆优先级队列定义优先级
- reactjs - React Hook 表单 | 基于验证错误的 onBlur 逻辑