astuce et textview avec le bouton droit de la gravité et un singleline
J'ai ouvert un bug, mais je me demandais si quelqu'un a rencontré ce problème et connait une solution de contournement.
Si vous définissez un affichage de texte avec un soupçon à l'intérieur de lui, lui donner le droit de gravité (android:gravity="right") alors si vous définissez android:singleLine=true ou android:maxLines="1" ou android:scrollHorizonatally="true" vous ne voyez pas le soupçon. retrait du droit de la gravité retourne l'indice de la gauche, la suppression de tous les arbres params je l'ai mentionné ci-dessus met l'indicateur sur le côté droit. je veux que mon allusion sur le droit, mais j'ai besoin d'une seule ligne horizontale...
voici l'exemple de mise en page qui ne montre pas l'astuce:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dp">
<EditText android:layout_width="fill_parent"
android:layout_gravity="center_vertical|right"
android:layout_height="wrap_content"
android:layout_margin="6dp"
android:textSize="16sp"
android:paddingRight="5dp"
android:id="@+id/c"
android:gravity="right"
android:hint="hello!!!"
android:scrollHorizontally="true"
android:maxLines="1"
android:singleLine="true"/>
</LinearLayout>
j'ai vérifié sur 1.6 et 2.1 émulateurs et elle se reproduit à 100%, je suis prettysure c'est un bug, je ne vois pas le lien entre la ligne et l'indicateur.... de plus l'indicateur obtenu son propre mise en page dans le TextView (mLayout et mHintLayout deux existe, dans onDraw si la longueur du texte est de 0 mHintLayout si mHint n'est pas null est utilisé).
OriginalL'auteur codeScriber | 2011-01-10
Vous devez vous connecter pour publier un commentaire.
Dirait que vous êtes au bon endroit avec la question; j'ai essayé de jouer avec votre exemple de mise en page et vu le même problème. Je suppose cette est votre rapport de bogue.
La solution la plus simple est de simplement changer votre mise en page, mais ce n'est probablement pas ce que vous voulez faire. Ma première tentative de contourner serait d'essayer de ne pas fixer de l'un de ces trois attributs en XML, puis de leur mise en Java. Si cela ne fonctionne pas...
Une option consiste à imiter l'indicateur soit en étendant la EditText de classe et de tenter de corriger le code qui définit l'indicateur de vous-même, ou en surchargeant la méthode onDraw pour créer l'indice, ou peut-être par simple chevauchement régulièrement TextView sur le dessus de l'EditText, que vous pouvez ensuite afficher/masquer manuellement. Vous pourriez même avoir le point de vue de vérifier si elle est vide, et si le texte de votre indice de texte et modifier la couleur. Lorsque le point de vue des gains de focus, de vérifier si son texte est égal à votre suggestion et, si oui, supprimez le texte et changez la couleur d'arrière.
Une autre solution possible qui est un peu plus "hacky" est à laisser de côté les trois attributs qui cause des problèmes, mais essayez manuellement éviter un retour à la ligne en cours de création. Vous auriez besoin de créer un OnKeyListener pour votre EditText, quelque chose comme ceci:
Vous voulez également appel
editText.setImeOptions(EditorInfo.IME_ACTION_NEXT)
pour éviter l'affichage de la touche retour. Il peut être possible de créer un saut de ligne dans votre champ de texte par collage, ou peut-être une autre méthode, si vous voulez également pour analyser et supprimer les retours à la ligne lorsque le formulaire est soumis, juste pour être sûr. Ce n'est pas non susceptibles de faire ce que vous voulez autant que le défilement horizontal.ce n'est pas une vraie solution ,je vais l'accepter de toute façon jusqu'à ce que quelque chose de mieux, le bug je l'ai ouvert pour android a été acceptée et défini en tant que NOUVELLE le bug est dans la réponse de lien si any1 veut suivre
OriginalL'auteur Ian G. Clifton
Avez-vous essayé
android:ellipsize="start"
? Cela a beaucoup travaillé pour moi dans le passé, lorsque j'ai voulu que mon soupçon etEditText
centrée.Bizarre solution, mais a travaillé pour moi aussi (avait une TextView avec le bouton droit de la gravité, et textCapWords, et qui a été la rupture de l'indicateur d'alignement). Merci!
pas de problème, il est certainement une drôle de solution de contournement, j'ai couru dans un grand nombre d'incohérences avec
ellipsize
,hint
, etgravity
, peut-être que ces seront nettoyés à l'avenirIl fonctionne avec textview aligner à droite,au centre vertical et singleline=true....Merci man
OriginalL'auteur dylan murphy
utilisation de ces propriétés avec hint et unique ligne...u peux chnge de la gravité!!
OriginalL'auteur akashgupta
Notant travaillé assez bon pour moi. Lorsque j'ai mis la Gravité.à droite, le curseur est toujours sur la droite, et ne pouvait pas être placé au milieu de la parole.
J'ai essayé une approche différente - mettre l'ensemble de la gravité de la la droite quand il n'y a pas de texte (ou à gauche, si cela fonctionne pour vous) et laissez android décider de la meilleure direction une fois que l'utilisateur a entré quelque chose
Cela a fonctionné pour moi:
créer
TextWatcher
classel'utiliser en tant que membre de la classe
dans
onCreate()
:dans
onDestroy()
:OriginalL'auteur Asaf Pinhassi
Que pensez-vous de ma solution à ce problème?
Et le Fichier XML correspondant:
Fonctionne très bien pour moi: juste une ligne, pas touche entrée possible, montre-moi le soupçon et quand je quitte le terrain après certains commentaires ont été remis, le texte apparaît aligné à droite.
OriginalL'auteur Christian Lischnig
il a travaillé avec moi quand j'ai ajouté:
et dans mon activité, j'ai ajouté :
OriginalL'auteur Chris Sim
J'ai remarqué ce problème lors de mon TextView atr sont:
Quand j'essaie de Linkify le textview ou setMovementMethod(LinkMovementMethod.getInstance()) sur la textview, le texte est tout simplement disparu.
résolu mon problème, car j'utilise le texte arabe dans mon application.
OriginalL'auteur granko87