Android Custom EditText zeigt keinen Cursor in ICS

Ich habe ein EditText in meiner Anwendung, die nur Eingänge von Schaltflächen erhalten soll, die ich auf dem Bildschirm platziert habe.

Um zu vermeiden, dass die Soft-Tastatur erscheint, habe ich eine benutzerdefinierte EditText-Klasse wie folgt:

public class CustomEditText extends EditText { public CustomEditText(Context context) { super(context); } public CustomEditText(Context context, AttributeSet attrs) { super(context, attrs); } @Override // Disables Keyboard; public boolean onCheckIsTextEditor() { return false; } } 

Dies hört auf, dass die Tastatur nicht auftritt, aber bei ICS hört dieser Ansatz auch auf, den Cursor zu erscheinen.

setCursorVisible(true) hat keine Wirkung.

Ich habe versucht, alternative Methoden zu halten die Soft-Tastatur versteckt, wie mit android:editable="false" und .setKeyListener(null); Aber keiner dieser Lösungen hat jemals in meinen Tests gearbeitet. Die Tastatur erscheint immer.

Also, gibt es einen Weg, um den Cursor in ICS zurückzukehren, während die onCheckIsTextEditor überschreiben, wie es ist?

  • Android: Benutzerdefiniertes EditText-Layout mit XML
  • Android OnEditorAction hat niemals angerufen
  • Ändern Sie die Schriftart des Floating-Labels EditText und TextInputLayout
  • Wie reduzieren Sie Platz zwischen Floating EditText Hint und EditText Box in Android?
  • Wie komme ich einen int aus EditText zurück? (Android)
  • OnEditorActionListener funktioniert nicht
  • EditText in Listview verliert Fokus, wenn auf Android 4.x gedrückt wird
  • Make EditText wachsen, wie es gefüllt ist
  • 2 Solutions collect form web for “Android Custom EditText zeigt keinen Cursor in ICS”

    Wieso versuchst du nicht, so weiches Tastenfeld zu deaktivieren

    PINLockactivity.java

      //text field for input sequrity pin txtPin=(EditText) findViewById(R.id.txtpin); txtPin.setInputType( InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_PASSWORD); txtPin.setSelection(txtPin.getText().length()); txtPin.setTextSize(22); txtPin.setSingleLine(true); //disable keypad txtPin.setOnTouchListener(new OnTouchListener(){ @Override public boolean onTouch(View v, MotionEvent event) { int inType = txtPin.getInputType(); // backup the input type txtPin.setInputType(InputType.TYPE_NULL); // disable soft input txtPin.onTouchEvent(event); // call native handler txtPin.setInputType(inType); // restore input type return true; // consume touch even } }); 

    Und für dieses EditText-Feld

    XML-Code ist

     <EditText android:layout_width="wrap_content" android:id="@+id/txtpin" android:maxLength="4" android:layout_height="37dp" android:gravity="center_horizontal" android:longClickable="false" android:padding="2dp" android:inputType="textPassword|number" android:password="true" android:background="@drawable/edittext_shadow" android:layout_weight="0.98" android:layout_marginLeft="15dp"> <requestFocus></requestFocus> </EditText> 

    Dies funktioniert gut mit mir für Eingangssicherheit PIN mit Cursor.

    Ich nehme Eingabe von Taste nicht Tastatur.

    Ich habe endlich eine (für mich) Arbeitslösung gefunden.

    Erster Teil (in onCreate):

     // Set to TYPE_NULL on all Android API versions mText.setInputType(InputType.TYPE_NULL); // for later than GB only if (android.os.Build.VERSION.SDK_INT >= 11) { // this fakes the TextView (which actually handles cursor drawing) // into drawing the cursor even though you've disabled soft input // with TYPE_NULL mText.setRawInputType(InputType.TYPE_CLASS_TEXT); } 

    Darüber hinaus muss android: textIsSelectable auf true gesetzt sein (oder in onCreate setzen) und der EditText darf nicht auf die Initialisierung fokussiert sein. Wenn Ihr EditText die erste fokussierbare Ansicht ist (die es in meinem Fall war), können Sie dies umgehen, indem Sie dies gerade darüber legen:

     <LinearLayout android:layout_width="0px" android:layout_height="0px" android:focusable="true" android:focusableInTouchMode="true" > <requestFocus /> </LinearLayout> 

    Sie können die Ergebnisse dieser in der Grapher-Anwendung sehen, frei und verfügbar in Google Play.

    Anmerkung / Bearbeiten: Es ist nicht notwendig, von EditText abzuleiten, um eigene zu erstellen, wenn Sie diese Methode verwenden, um zu verhindern, dass der Cursor deaktiviert wird.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.