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

以編程方式設(shè)置 textCursorDrawable

set textCursorDrawable programmatically(以編程方式設(shè)置 textCursorDrawable)
本文介紹了以編程方式設(shè)置 textCursorDrawable的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

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

現(xiàn)在我用 Java 繪制一個(gè) EditText.我想設(shè)置 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 ?

如何設(shè)置?

解決方案

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

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

使用反射設(shè)置光標(biāo):

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);} 捕捉(忽略異常){}

在你的應(yīng)用中定義一個(gè)可繪制的光標(biāo):


另一種方法:

您也可以通過(guò)以下方法設(shè)置光標(biāo)顏色:

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);對(duì)象編輯器 = 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) {
    } 
} 

這篇關(guān)于以編程方式設(shè)置 textCursorDrawable的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

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

相關(guān)文檔推薦

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 操作標(biāo)簽的多行 EditText)
How to detect the swipe left or Right in Android?(如何在 Android 中檢測(cè)向左或向右滑動(dòng)?)
Prevent dialog dismissal on screen rotation in Android(防止在Android中的屏幕旋轉(zhuǎn)對(duì)話框解除)
How do I handle ImeOptions#39; done button click?(如何處理 ImeOptions 的完成按鈕點(diǎn)擊?)
How do you set EditText to only accept numeric values in Android?(您如何將 EditText 設(shè)置為僅接受 Android 中的數(shù)值?)
主站蜘蛛池模板: 精品在线观看入口 | 国产精品久久久久久久久免费高清 | а_天堂中文最新版地址 | 日韩欧美三区 | 蜜臀网| 91精品国产91久久久久久不卞 | 日本午夜一区二区三区 | 久久久久久久久久久久久九 | 午夜私人影院在线观看 | 日韩欧美国产精品 | 成人精品在线视频 | 日本精品久久久久久久 | 欧美一区二区三区 | 精品九九| 在线观看www高清视频 | 国产不卡视频 | 在线视频日韩精品 | 国产一区二区三区久久 | 欧美福利影院 | 精品日本久久久久久久久久 | 亚洲精品成人在线 | 日本一区二区高清视频 | 成人av免费| 午夜在线 | 日韩在线高清 | 一区二区视频在线 | 国产伦精品一区二区三区四区视频 | 麻豆一区二区三区精品视频 | 欧美日韩不卡合集视频 | 成人av电影在线观看 | 久久av一区二区三区 | 在线欧美亚洲 | 翔田千里一区二区 | 7777在线| 你懂的在线视频播放 | 九九久久国产 | 亚洲一区 中文字幕 | 久久一二三区 | 精品乱子伦一区二区三区 | 特级毛片| 日日骚av|