久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

以編程方式設置 textCursorDrawable

set textCursorDrawable programmatically(以編程方式設置 textCursorDrawable)
本文介紹了以編程方式設置 textCursorDrawable的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

如果我在 XML 中添加 EditText 我可以設置 textCursorDrawable="@null":

現在我用 Java 繪制一個 EditText.我想設置 android:textCursorDrawable="@null".

LinearLayout.LayoutParams paramtext = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,線性布局.LayoutParams.WRAP_CONTENT);EditText txtOther = new EditText(this);txtOther.setLayoutParams(paramtext);txtOther.setBackgroundColor(Color.WHITE);txtOther.setTextColor(Color.BLACK);txtOther.setId(99999);//txtOther.setCursorDrawable ?

如何設置?

解決方案

2019 年更新:沒有設置可繪制光標的公共 API. 參見 https://stackoverflow.com/a/57555148/253468 適用于 29 及更高版本的 API,在此之前,您需要有條件地使用反射,如下所述.p>

在 API 29 之前,您可以使用反射以編程方式設置它.mCursorDrawableRes 字段沒有更改,因此這應該適用于所有設備,除非制造商更改了某些內容或稍后更改.

使用反射設置光標:

EditText yourEditText = new EditText(context);...嘗試 {//https://github.com/android/platform_frameworks_base/blob/kitkat-release/core/java/android/widget/TextView.java#L562-564字段 f = TextView.class.getDeclaredField(mCursorDrawableRes");f.setAccessible(true);f.set(yourEditText, R.drawable.cursor);} 捕捉(忽略異常){}

在你的應用中定義一個可繪制的光標:


另一種方法:

您也可以通過以下方法設置光標顏色:

public static void setCursorDrawableColor(EditText editText, int color) {嘗試 {字段 fCursorDrawableRes = TextView.class.getDeclaredField("mCursorDrawableRes");fCursorDrawableRes.setAccessible(true);int mCursorDrawableRes = fCursorDrawableRes.getInt(editText);字段 fEditor = TextView.class.getDeclaredField("mEditor");fEditor.setAccessible(true);對象編輯器 = fEditor.get(editText);類<?>clazz = editor.getClass();字段 fCursorDrawable = clazz.getDeclaredField("mCursorDrawable");fCursorDrawable.setAccessible(true);可繪制 [] 可繪制 = 新的可繪制 [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(編輯器,drawables);} catch (Throwable 被忽略) {}}

If I add an EditText in XML I can set textCursorDrawable="@null":

<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" />

Now I draw an EditText in Java. I want set 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 ?                                

How do set it?

解決方案

Update 2019: There is no public API to set the cursor drawable. See https://stackoverflow.com/a/57555148/253468 for API available on 29 and above, before that conditionally you'll need to use reflection as described below.

Before API 29 you can set it programmatically by using reflection. The field mCursorDrawableRes hasn't changed so this should work on all devices, unless a manufacturer changed something or it is later changed.

Use reflection to set the cursor:

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) {
}

Define a cursor drawable in your app:

<?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>


Another approach:

You can also set the cursor color with the following method:

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) {
    } 
} 

這篇關于以編程方式設置 textCursorDrawable的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

EditText: Disable Paste/Replace menu pop-up on Text Selection Handler click event(EditText:禁用文本選擇處理程序單擊事件上的粘貼/替換菜單彈出)
Multiline EditText with Done SoftInput Action Label on 2.3(2.3 上帶有完成 SoftInput 操作標簽的多行 EditText)
How to detect the swipe left or Right in Android?(如何在 Android 中檢測向左或向右滑動?)
Prevent dialog dismissal on screen rotation in Android(防止在Android中的屏幕旋轉對話框解除)
How do I handle ImeOptions#39; done button click?(如何處理 ImeOptions 的完成按鈕點擊?)
How do you set EditText to only accept numeric values in Android?(您如何將 EditText 設置為僅接受 Android 中的數值?)
主站蜘蛛池模板: 亚洲精品一区二区三区 | 亚洲精品一级 | 日本免费视频 | 日韩中文一区二区三区 | 久久久妇女国产精品影视 | 亚洲一区二区久久 | 亚洲精品区 | 欧美日韩亚洲在线 | 国产一区二区精品在线观看 | 国产成人精品免高潮在线观看 | 极品销魂美女一区二区 | 欧美日韩精品区 | 成人一区二区三区视频 | 91资源在线| 在线播放国产一区二区三区 | 国产美女久久 | 91精品国产乱码久久久久久久久 | 天天影视网天天综合色在线播放 | 欧美一区二区在线播放 | 国产精品中文字幕在线 | 青青草综合网 | 99re6在线 | 羞羞视频网站免费观看 | 精品视频亚洲 | 99reav| 亚洲综合免费 | 黑色丝袜三级在线播放 | 天天干狠狠操 | 精品免费在线 | www国产亚洲精品久久网站 | 人人做人人澡人人爽欧美 | 国产一区免费 | av在线影院 | 精品国产乱码久久久久久影片 | 欧美成人精品在线 | 91精品国产91久久久久久吃药 | 犬夜叉在线观看 | 免费毛片网 | 精品av天堂毛片久久久借种 | 亚洲综合字幕 | 亚洲国产精品99久久久久久久久 |