EditText --> Keyboard verbergen

  • 17 Antworten
  • Letztes Antwortdatum
Q

qwert_zuiopue

Fortgeschrittenes Mitglied
6
Hallo,

ich möchte, dass kein Keyboard erscheint, wenn der Benutzer ein Textfeld berührt.

Habe bereits folgendes versucht:
In der Manifest die Zeile
android:windowSoftInputMode="stateAlwaysHidden" >
eingefügt. Leider keine Änderung

Außerdem fand ich mit google noch folgende Vorschläge:
1.
Code:
<Button android:id="@+id/edit_birthday" style="@android:style/Widget.EditText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/hint_birthday"/>
Wäre prinzipiell möglich, ich brauche aber die Methoden getSelectionStart() und getSelectionEnd()

2.
Code:
edittext = (EditText) findViewById(R.id.EditText01);

edittext.setOnEditorActionListener(new OnEditorActionListener() {
      public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
         if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
            InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            in.hideSoftInputFromWindow(edittext.getApplicationWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
         }
         return false;
      }
   });
}
-> funktioniert nicht

3.
Code:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Geht leider auch nicht.


Gibt es noch eine andere Möglichkeit??

Besten Dank!!
 
Was genau willst du den tun?
 
Hi,

Doku lesen:
TextView | Android Developers

none - There is no content type. The text is not editable.

€dit1: Was ich mich aber frage. Wieso möchtest du generell ein EditText benutzen? Nimm doch ein TextView?!
€dit2: Antwort auf €1: Ach wegen den zwei Methden.. Ok :D
€dit3: Antwort auf €2: hat aber ein TextView auch :O

€dit: Nochmal alles shcön formatieren :D
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: qwert_zuiopue
Sehr gut, danke, funktioniert :).

Ein kleines Problem bleibt noch. Wenn der Benutzer in das Feld tippt, erhält er kein visuelles feedback, weil auch der Cursor verschwunden ist. Auch
Code:
		edittext.setCursorVisible(true);
hilft nicht weiter.
 
Ja klar. Ist ja auch total verwirrend, wenn man da "rein gehen kann" aber nichts schreiben.
Weiß wirklich nicht was du machen willst. Ist auch total user unfreundlich.

Zwei ideen hätte ich:
1. Du könntest, beim rein klicken (wenn das funtkioneirt) die hintergrund farbe kurz ändern (oder generell)
2. Dir ein eigenes EditText bauen worin du entsprechende methoden überschreibst.

Gruß
 
Ich schreibe einen Taschenrechner mit editierbarem Eingabefeld. Die entsprechenden Eingabebuttons stelle ich also selbst bereit.
 
hä?
Die anzeige, wo 5+5 steht, ist ein EditText.
Der user kann diesen nicht ändern, da unten Buttons für jede Zahl und Operatoren sind?

Wieso dann ein edittext?!
 
Der Benutzer kann diesen Text schon ändern, aber nur mit den Tasten, die ich selbst bereitstelle (weil die eingeblendete Tastaur zu viele überflüssige Buttons enthält).
Wenn er 5+X reinschreibt, die erste Zahl dann aber doch zu 7 ändern will, ohne sich den ganzen rest X zu merken, muss er die 5 markieren können.
 
Achso. Deswegen brauchst du auch onSelctedStart und End :lol:

Hmm.. Schwierig. Dann musst du dir wohl ein extra Widget schreiben, welches druch EditText erweitert wird und die entsprechende methode zum aufrufen der Tastatur überschreiben.
Musst dann halt bisschen im quelltext wühlen :D

Gruß

Ps.: Das wäre jetzt meine Idee. Vielleicht geht es auch iwie einfach...
 
Hi, ich hab auch einen kleinen Taschenrechner geschrieben und um dieses zu umgehen hab ich das in der onCreate geschrieben und damit klappt es auch bei mir

Code:
InputMethodManager inputMethodManager = (InputMethodManager) 
getSystemService(INPUT_METHOD_SERVICE);
  
inputMethodManager.hideSoftInputFromWindow(eingabe.getWindowToken(), 0);

eingabe.setInputType(InputType.TYPE_NULL);
mfg

PS: eingabe Ist der Name deines EditTextes
 
Hi Kollen,

das problem ist ja auch schon gelöst.
Allerdings stehen wir, wie oben beschrieben, vor einem neuen.

Hast du da eventuell eine Idee zu?

gruß
 
Hi IceClaw, naja das Problem ist das er den Cursor nicht angezeigt bekommt an der Stelle in der "getoucht" wurde weil er evlt einen TextView lieber benutzt (?) , so wie ich das verstanden habe.

Wenn er aber einen EditText benutzt kann er, so wie ich es im vorherigen Beitrag geschrieben habe, den InputManager benutzen und damit die Softtastatur für diesen edittext blockieren. Der Cursor bleibt aber weiterhin sichtbar, also es hat keinen Einfluss auf den Cursor. Wenn der User dann an einer Stelle tippt kann er durch getSelectionStart die Position des cursos ermitteln und ab dort evtl Zahlen durch die Buttons hinzufügen oder vor dem Cursor die Zahlen löschen. Wie gesagt er braucht dafür nur die Position des Cursors ermitteln und damit dann die Eingabe bearbeiten (löschen, editieren usw).

mfg
 
  • Danke
Reaktionen: qwert_zuiopue und StefMa
Bist du sicher, dass bei dir der Cursor sichtbar bleibt? Bei mir tut er das nämlich nicht :sad:.
 
Naja wenn nicht dann einfach editText.setCursorVisible7(true) setzen. Mfg

Gesendet von meinem LG-P920 mit der Android-Hilfe.de App
 
Hab ich auch schon versucht, aber das geht nicht.
 
Also bei mir gings. Muss ich dann wenn ich daheim bin anschauen. Aber wenn du willst lad dein projekt schon mal hoch dann kann ichs oder evtl ein anderer versuchen es zu korrigieren. Mfg bs

Gesendet von meinem LG-P920 mit der Android-Hilfe.de App

Der ursprüngliche Beitrag von 13:51 Uhr wurde um 15:33 Uhr ergänzt:

Hi, nun mein EditText schaut so aus in der .xml Datei und damit sollte es eigentlich auch schon gehen, da der Cursor schon von anfang an in EditTexte auf visible gestellt ist

Code:
<EditText
                android:id="@+id/calculator_edt_eingabe"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@color/d"
                android:ems="10"
                android:inputType="none"
                android:lines="1"
                android:text="@string/leer"
                android:textColor="@android:color/background_dark"
                android:textSize="16pt" >

                <requestFocus />

                <requestFocus />
            </EditText>

mfg

ps: wenn nicht, lad doch dein Projekt hier hoch (wenn du kein Problem damit hast).
 
Danke für deine Bemühungen.

Ich habe mal ein neues, minimales Projekt erstellt:

Main.java
Code:
package com.taschenrechner;

import android.app.Activity;
import android.os.Bundle;
import android.text.InputType;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;

public class Main extends Activity  {
	private EditText ETaufgabe;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        ETaufgabe = (EditText) findViewById(R.id.ETaufgabe);        
    	
    	InputMethodManager inputMethodManager = (InputMethodManager) 
    	getSystemService(INPUT_METHOD_SERVICE);    			  
    	inputMethodManager.hideSoftInputFromWindow(ETaufgabe.getWindowToken(), 0);
    	ETaufgabe.setInputType(InputType.TYPE_NULL);
	}
}

res/layout/main.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearlayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <EditText
                android:id="@+id/ETaufgabe"
                android:layout_width="match_parent"
                android:layout_height="30dp"
                android:layout_weight="1"
                android:ems="10"
                android:inputType="none"
                android:lines="1"
                android:text="Testtext"
                android:textSize="16pt" >

                <requestFocus />

                <requestFocus />
     </EditText>
    
</LinearLayout>

So funktioniert es bei mir nicht.
 
Hm, also weiter kann ich dir leider nicht mehr helfen, da der code bei mir einwandfrei funktioniert und mit einem Cursor, aber bei dir halt nicht ... naja das letzte was ich noch sagen kann ist dein projekt nochmal cleanen aber ich glaub das ist es nicht^^mfg

Der ursprüngliche Beitrag von 19:32 Uhr wurde um 19:53 Uhr ergänzt:

Edit: kann es sein das dein Background oder EditText schwarz ist? Wenn ja dann könnte sein dass der Cursor da ist aber halt weil es auch schwarz ist nicht sichtbar

mfg
 
Zurück
Oben Unten