<EditText androID:ID="@+ID/txtE3Casecode4" androID:layout_wIDth="30dp" androID:layout_height="wrap_content" androID:layout_alignParenttop="true" androID:background="#C7C7C5" androID:textCursorDrawable="@null" androID:ems="10" androID:inputType="number" androID:maxLength="2" androID:text="01" androID:textcolor="#000000" />
现在我在Java中绘制一个EditText.我想设置androID:textCursorDrawable =“@ null”.
linearLayout.LayoutParams paramtext = new linearLayout.LayoutParams( linearLayout.LayoutParams.FILL_PARENT,linearLayout.LayoutParams.WRAP_CONTENT);EditText txtOther = new EditText(this);txtOther.setLayoutParams(paramtext);txtOther.setBackgroundcolor(color.WHITE);txtOther.setTextcolor(color.BLACK);txtOther.setID(99999);// txtOther.setCursorDrawable ?
怎么设置它?
解决方法 没有公共API来设置光标可绘制.您可以使用反射以编程方式设置它.字段mCursorDrawableRes没有改变,因此这应该适用于所有设备,除非制造商更改了某些内容或稍后更改了.使用反射设置光标:
EditText yourEditText = new EditText(context);...try { // https://github.com/androID/platform_frameworks_base/blob/kitkat-release/core/java/androID/Widget/TextVIEw.java#L562-564 FIEld f = TextVIEw.class.getDeclaredFIEld("mCursorDrawableRes"); f.setAccessible(true); f.set(yourEditText,R.drawable.cursor);} catch (Exception ignored) {}
在您的应用中定义可绘制的光标:
<?xml version="1.0" enCoding="utf-8"?><shape xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:shape="rectangle" > <solID androID:color="#ff000000" /> <size androID:wIDth="1dp" /></shape>
另一种方法:
您还可以使用以下方法设置光标颜色:
public static voID setCursorDrawablecolor(EditText editText,int color) { try { FIEld fCursorDrawableRes = TextVIEw.class.getDeclaredFIEld("mCursorDrawableRes"); fCursorDrawableRes.setAccessible(true); int mCursorDrawableRes = fCursorDrawableRes.getInt(editText); FIEld fEditor = TextVIEw.class.getDeclaredFIEld("mEditor"); fEditor.setAccessible(true); Object editor = fEditor.get(editText); Class<?> clazz = editor.getClass(); FIEld fCursorDrawable = clazz.getDeclaredFIEld("mCursorDrawable"); fCursorDrawable.setAccessible(true); Drawable[] drawables = new Drawable[2]; drawables[0] = editText.getContext().getResources().getDrawable(mCursorDrawableRes); drawables[1] = editText.getContext().getResources().getDrawable(mCursorDrawableRes); drawables[0].setcolorFilter(color,PorterDuff.Mode.SRC_IN); drawables[1].setcolorFilter(color,PorterDuff.Mode.SRC_IN); fCursorDrawable.set(editor,drawables); } catch (Throwable ignored) { } }总结
以上是内存溢出为你收集整理的android – 以编程方式设置textCursorDrawable全部内容,希望文章能够帮你解决android – 以编程方式设置textCursorDrawable所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)