在没有xml的情况下更改edittext游标颜色和大小?

问题描述 投票:0回答:1

我一直在做一个练习应用程序,用户可以在其中设置文本和背景的颜色。但我没有找到解决办法

android:textCursorDrawable="@null"

我试过这个,虽然它将颜色设置为与文本颜色相同但它不是我想要做的,因为我有一个特定的光标尺寸。

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size android:width="10dip" />
    <size android:height="14dip" />
    <solid android:color="#fff" />
</shape>

我也试过android:color =“@ null”但是没有返回任何东西......显然真的(这是我自己愚蠢的一个注释)。

最后,我看到了这一点。

 Field f = null;
 f = TextView.class.getDeclaredField("mCursorDrawableRes");
 f.setAccessible(true);
 f.set(editText, R.drawable.cursor);

我可以通过这种方式设置颜色吗?或者它只是我已经拥有的xml调用的java版本?任何帮助,将不胜感激。

基本上,总而言之,我喜欢将光标的颜色设置为与编辑文本颜色相同但是我的光标高度和宽度为10x14?

谢谢

java android
1个回答
1
投票

请检查这个光标颜色变化,

public static void setCursorColor(EditText view, @ColorInt int color) {
  try {
    // Get the cursor resource id
    Field field = TextView.class.getDeclaredField("mCursorDrawableRes");
    field.setAccessible(true);
    int drawableResId = field.getInt(view);

    // Get the editor
    field = TextView.class.getDeclaredField("mEditor");
    field.setAccessible(true);
    Object editor = field.get(view);

    // Get the drawable and set a color filter
    Drawable drawable = ContextCompat.getDrawable(view.getContext(), drawableResId);
    drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
    Drawable[] drawables = {drawable, drawable};

    // Set the drawables
    field = editor.getClass().getDeclaredField("mCursorDrawable");
    field.setAccessible(true);
    field.set(editor, drawables);
  } catch (Exception ignored) {
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.