1.问题描述
近期做项目的时候发现在代码中动态生成EditText的时候光标的高度竟然没有和背景一样高,这样在输入的时候就可能会看不到自己输入的内容。像下图所示:
异常.png而正常的应该是像下图所示:
正常.png动态生成EdiText代码如下:
//创建内部edittext控件
EditText etContent = new EditText(this);
LinearLayout.LayoutParams etParam = new LinearLayout.LayoutParams(
dp2px(this, 150), dp2px(this, 24)
);
// 修改光标样式
// try {
//// Field field = TextView.class.getDeclaredField("mCursorDrawableRes");
//// field.setAccessible(true);
//// field.set(etContent, R.drawable.et_cursor_style);
//// } catch (Exception e) {
////
//// }
//etContent.setBackgroundResource(R.drawable.edit_register_bg);
etContent.setLayoutParams(etParam);
//etContent.setPadding(0, 10, 0, 10);
etContent.setBackground(getResources().getDrawable(R.drawable.edit_register_bg));
etParam.setMargins(dp2px(this, 20), 0, 0, 0);
layout.addView(etContent);
listEditText.add(etContent);
//R.drawable.edit_register_bg代码
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#ffffff"/>
<corners
android:radius="5dip"
/>
<stroke
android:width="3px"
android:color="#000000"/>
</shape>
</item>
</layer-list>
2.解决方案
其实,解决方案挺简单的,我已经在上面的代码中了,只不过我把它注释掉了而已。就是通过设置Padding就可以了。具体数值大家视情况而定。(大佬们有其他更好的方法也可以留言一下啊!)
etContent.setPadding(0, 10, 0, 10);
网友评论