在我的Android應用程序中,我想要一個EditText
與android:editable="false"
,但光標閃爍。 「可編輯」設置爲false後,光標閃爍似乎不起作用。禁用EditText的輸入法,但保持光標閃爍
我只想使用我自己的鍵盤小部件(不是系統的軟鍵盤),並保持光標閃爍。
有什麼想法可以做到這一點嗎?
在我的Android應用程序中,我想要一個EditText
與android:editable="false"
,但光標閃爍。 「可編輯」設置爲false後,光標閃爍似乎不起作用。禁用EditText的輸入法,但保持光標閃爍
我只想使用我自己的鍵盤小部件(不是系統的軟鍵盤),並保持光標閃爍。
有什麼想法可以做到這一點嗎?
您可以使用XML屬性
機器人:cursorVisible = 「假」
或Java功能
setCursorVisible(假)。
,將工作
他希望光標可見。此外,我不認爲這個代碼工作,如果它是不可聚焦的。 – Eric
也許嘗試留出的XML屬性android:editable
完全然後嘗試組合下面以
,使光標閃爍和阻止彈出一個原生輸入法的觸摸事件(鍵盤)..
/*customized edittext class
* for being typed in by private-to-your-app custom keyboard.
* borrowed from poster at http://stackoverflow.com/questions/4131448/android-how-to-turn-off-ime-for-an-edittext
*/
public class EditTextEx extends EditText {
public EditTextEx(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onCheckIsTextEditor() {
return false; //for some reason False leads to cursor never blinking or being visible even if setCursorVisible(true) was called in code.
}
}
步驟2 改變上述方法爲s AY return true;
步驟3 添加另一種方法上面的類。
@Override
public boolean isTextSelectable(){
return true;
}
步驟4 在其他地方,這個類的實例已被實例化,並呼籲viewB
我添加了一個新的觸摸事件處理
viewB.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
viewB.setCursorVisible(true);
return false;
}
});
步驟5檢查以確保XML和或的EditText實例化代碼聲明IME /鍵盤類型爲「無」。我沒有確認相關性,但我也使用下面的可重點屬性。
<questionably.maybe.too.longofa.packagename.EditTextEx
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:focusable="true"
android:focusableInTouchMode="true"
android:inputType="none">
對不起,這麼多XML屬性。我的代碼全部使用它們,在4.2.1
進行測試,並有結果。
希望這會有所幫助。
謝謝,完美的作品。我在Nexus 4上,操作系統是6.0.1。就我而言,「步驟5」不是必需的。 –
只是爲任何正在尋找和回答的人添加此方法。我已經嘗試了很多方法,但只有這一個從我工作。
public static void disableSoftKeyboard(final EditText v) {
if (Build.VERSION.SDK_INT >= 11) {
v.setRawInputType(InputType.TYPE_CLASS_TEXT);
v.setTextIsSelectable(true);
} else {
v.setRawInputType(InputType.TYPE_NULL);
v.setFocusable(true);
}
}
我從onCreate()調用以下內容,但是這會影響所有EditTexts。
private void hideKeyboard()
{
getWindow().setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
getWindow().setFlags (WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
}
我最初發布了一個答案,使用'android:inputType =「none」'。但是,現在我想到了這一點,我認爲這是不可能的。對於開發者來說,做出這樣的事情是不可能的。我建議你用你自己的觸摸監聽器製作一個自定義的'TextView'類。 – Eric
你有任何問題可以通過爲EditText設置TextWatcher來解決這個問題? –
Thanks @Eric,我查找TextView.shouldBlink()和TextView.onDraw(4.0.3)的源代碼,並且光標閃爍的條件是「mMovement!= null &&(isFocused()|| isPressed()) 「和isCursorVisible(),它真的需要製作一個自定義的TextView嗎?或者我們可能有一個簡單的方法? – heihei