美文网首页
代码动态生成EditText的光标高度问题

代码动态生成EditText的光标高度问题

作者: LongSh1z | 来源:发表于2019-07-27 12:23 被阅读0次

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);

相关文章

网友评论

      本文标题:代码动态生成EditText的光标高度问题

      本文链接:https://www.haomeiwen.com/subject/ctncrctx.html