Android automatique défilement horizontal d'un TextView
Je suis en train de mettre en œuvre une seule ligne d'affichage de texte qui défile automatiquement. Mais j'ai malheureusement impossible de le faire fonctionner. Le AutoScrollTextView est déclarée à l'intérieur d'un LinearLayout (largeur et hauteur = fill_parent). La classe utilise essentiellement un Gestionnaire qui s'appelle elle-même pour faire défiler par une quantité donnée. J'ai simplifié le code pour afficher uniquement un affichage de texte qui devrait être le défilement de 5 pixels à chaque seconde.
Le journal de sortie est correcte, le getScrollX() la méthode renvoie le approprié scrollX position.
Si je ne l'appelez pas requestLayout()
, rien n'est dessiné. invalidate()
n'a aucun effet.
Quelqu'un a une idée?
public class AutoScrollTextView extends TextView {
public AutoScrollTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setSingleLine();
setEllipsize(null);
setText("Single-line text view that scrolls automatically if the text is too long to fit in the widget");
}
//begin to scroll the text from the original position
public void startScrolling() {
scrollHandler.sendEmptyMessage(0);
}
private Handler scrollHandler = new Handler() {
private static final int REFRESH_INTERVAL = 1000;
public void handleMessage(Message msg) {
scrollBy(5, 0);
requestLayout();
Log.debug("Scrolled to " + getScrollX() + " px");
sendEmptyMessageDelayed(0, REFRESH_INTERVAL);
}
};
}
- Généralement pour le texte à faire défiler , il devrait être au point. Avez-vous essayé de donner le focus à votre disposition ? ou dire setSelected() de la vue?
- Yep, essayé de le faire à partir de l'activité et à partir du Gestionnaire dans le widget personnalisé.
Vous devez vous connecter pour publier un commentaire.
Si vous n'avez pas besoin de sous-classe de la
TextView
, vous pouvez essayer ceci dans votre fichier de mise en page:Aussi, dans votre code, utilisez les éléments suivants:
[Réponse édité sur la base des observations]
maxLines="1"
commesingleLine
était obsolètesingleLine
(pasmaxLines
) et sanssetSelected
. C'est le monde merveilleux de l'INTERFACE utilisateur Android de développement.Après ces code xml de réponse par @rajat
Nous avons besoin de définir
qui finalement fait le travail de la mine
Ma solution fonctionne:
Et la
TextView
doivent être programmés sélectionné:textView.setSelected(true);
par le code dansonCreate
par exemple.Parfois invalider l'habitude de travailler jusqu'à l'appel de l'invalider dans le thread principal comme suit: