美文网首页
代码动态生成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