Hinweis und Textansicht mit rechter Schwerkraft und einer Einzellinie

8

Ich habe einen Fehler geöffnet, aber ich habe mich gefragt, ob jemand dieses Problem erkannt hat und einen Workaround kennt. Wenn Sie eine Textansicht mit einem Hinweis darin definieren, geben Sie ihm die richtige Schwerkraft (Android: Gravitation="rechts"). Wenn Sie dann android: singleLine = true oder android: maxLines="1" oder android: scrollHorizonatally="true" Sie sehen den Hinweis nicht. Das Entfernen der richtigen Schwerkraft bringt den Hinweis zur linken Seite zurück und entfernt alle Baumparameter, die ich oben erwähnte, setzt den Hinweis auf die rechte Seite. Ich möchte meinen Hinweis auf der rechten Seite, aber ich brauche eine einzelne horizontale Linie ...

Hier ist das Beispiellayout, das den Hinweis nicht zeigt:

%Vor%

Ich habe auf Emulatoren 1.6 und 2.1 überprüft und es reproduziert 100%, ich bin prettysure es ist ein Fehler, ich sehe nicht die Verbindung zwischen der einzelnen Zeile und dem Hinweis .... was mehr ist der Hinweis hat seine eigenen Layout in das TextView (mLayout und mHintLayout sind beide vorhanden, in onDraw, wenn die Textlänge 0 mHintLayout ist, wenn mHint nicht null ist).

    
codeScriber 10.01.2011, 16:48
quelle

7 Antworten

5

Sieht aus, als ob Sie mit dem Problem genau richtig sind; Ich habe versucht, mit Ihrem Beispiellayout zu spielen und habe das gleiche Problem gesehen. Ich nehme an, dies ist Ihr Fehlerbericht.

Die einfachste Lösung ist, nur Ihr Layout zu ändern, aber das ist wahrscheinlich nicht das, was Sie tun möchten. Mein erster Versuch bei einem Workaround wäre, zu versuchen, keines dieser drei Attribute in XML zu setzen und sie dann in Java zu setzen. Wenn das nicht funktioniert ...

Eine Option besteht darin, den Hinweis nachzuahmen, indem Sie entweder die EditText-Klasse erweitern und versuchen, den Code zu korrigieren, der den Hinweis selbst erstellt, oder indem Sie die onDraw-Methode überschreiben, um den Hinweis zu erstellen, oder einfach nur einen normalen TextView überlappen des EditText, den Sie dann manuell ein- / ausblenden. Sie können sogar überprüfen, ob die Ansicht leer ist. Wenn dies der Fall ist, setzen Sie den Text auf Ihren Hinweistext und ändern Sie die Farbe. Wenn die Ansicht den Fokus erhält, prüfen Sie, ob der Text mit Ihrem Hinweis übereinstimmt. Wenn dies der Fall ist, entfernen Sie den Text und ändern Sie die Farbe zurück.

Eine weitere mögliche Problemumgehung, die ein bisschen "hacky" ist, besteht darin, die drei Attribute, die Probleme verursachen, nicht zu verwenden, aber manuell zu verhindern, dass eine neue Zeile erstellt wird. Sie müssten einen OnKeyListener für Ihren EditText erstellen, etwa so:

%Vor%

Sie möchten auch editText.setImeOptions(EditorInfo.IME_ACTION_NEXT) aufrufen, um zu vermeiden, dass der Return-Schlüssel angezeigt wird. Es kann immer noch möglich sein, einen neuen Zeilenumbruch in Ihrem Textfeld zu erstellen, indem Sie ihn einfügen oder eine andere Methode verwenden. Sie sollten daher Zeilenumbrüche analysieren und entfernen, wenn das Formular gesendet wird, um sicher zu gehen. Dies ist auch nicht das, was Sie wollen, soweit das horizontale Scrollen.

    
Ian G. Clifton 11.01.2011, 02:20
quelle
14

Hast du android:ellipsize="start" versucht? Das hat in der Vergangenheit gut funktioniert, als ich wollte, dass mein Hinweis und EditText zentriert sind.

    
dylan murphy 10.05.2011 23:40
quelle
2

Verwenden Sie diese Eigenschaften mit Hinweis und Einzellinie ... Sie können die Schwerkraft ändern !!

%Vor%     
akashgupta 26.09.2011 06:09
quelle
1

Noting hat gut genug für mich gearbeitet. Wenn ich Gravity.right setzte, war der Cursor immer auf der rechten Seite und konnte nicht in der Mitte des Wortes platziert werden.

Ich habe einen anderen Ansatz versucht - setze die Gravitation auf die richtige, wenn es keinen Text gibt (oder links, wenn es für dich funktioniert) und lass Android die beste Richtung entscheiden, sobald der Benutzer etwas eingegeben hat

Das hat für mich funktioniert:

  1. create TextWatcher class

    %Vor%
  2. benutze es als Klassenmitglied

    %Vor%
  3. in onCreate() :

    %Vor%
  4. in onDestroy() :

    %Vor%
Asaf Pinhassi 04.02.2013 15:33
quelle
0

Was halten Sie von meiner Lösung für dieses Problem?

%Vor%

Und die entsprechende XML-Datei:

%Vor%

Funktioniert gut für mich: nur eine Zeile, keine Enter-Taste möglich, zeigt mir den Hinweis und wenn ich das Feld nach der Eingabe verlassen habe, erscheint der Text rechtsbündig.

    
Christian Lischnig 08.02.2011 15:56
quelle
0

es funktionierte mit mir, als ich hinzufügte:

%Vor%

und in meiner Tätigkeit habe ich hinzugefügt:

%Vor%     
Chris Sim 13.09.2012 12:43
quelle
0

Ich habe dieses Problem bemerkt, wenn meine TextView atrs sind:

%Vor%

Wenn ich versuche, die Textansicht oder setMovementMethod (LinkMovementMethod.getInstance ()) mit dieser Textansicht zu verknüpfen, ist der Text einfach weg.

%Vor%

hat mein Problem gelöst, weil ich in meiner App arabischen Text verwende.

    
granko87 11.03.2014 13:22
quelle

Tags und Links