2010-08-19 4 views
1

Dans mon application Android, j'ai besoin de faire défiler un texte de sélection en continu. dans mon Xml i ont ce code:Marquee dans android

<TextView 
    android:id="@+id/widget28" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true"     
    android:singleLine="true"   
    android:ellipsize="marquee" 
    android:fadingEdge="horizontal" 
    android:marqueeRepeatLimit="marquee_forever" 
    android:scrollHorizontally="true" 
    android:textColor="#ff4500" 
    android:text="Simple application that shows how to use RelativeLayout " /> 

Et dans mon code source Java i ont:

TextView tv = (TextView)findViewById(R.id.widget28); 
tv.setSelected(true); 

Maintenant, ma question est ce code fonctionne fonctionne bien et chapiteau fin même si l'accent est pas sur le contrôle, mais le défilement du texte n'est pas complet.J'ai besoin du texte pour faire défiler complètement.Si j'ajoute de l'espace au texte à la fois avant et après le texte cela fonctionne bien mais ce n'est pas une bonne programmation. Y a-t-il un bon moyen d'y arriver?

Répondre

0

Je ne comprends pas votre problème.

J'ai copié votre code et inséré le TextView dans un RelativeLayout avec fill_parent pour les 2 axes et il fonctionne très bien (est pas ce que vous voulez?):

alt text

J'ai testé que code sur l'émulateur par défaut 2.1 et 2.2. Aucune difficulté.

Voici ma classe:

public class TextViewMarquee extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.textview); 
     findViewById(R.id.widget28).setSelected(true); 
    } 
} 

Et le xml associé:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TextView 
     android:id="@+id/widget28" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:ellipsize="marquee" 
     android:fadingEdge="horizontal" 
     android:marqueeRepeatLimit="marquee_forever" 
     android:scrollHorizontally="true" 
     android:singleLine="true" 
     android:text="Simple application that shows how to use RelativeLayout" 
     android:textColor="#ff4500" /> 
</RelativeLayout> 

Et c'est en fait tout, aucune ligne de mystère dans le manifeste ou le style ou ...

+0

Bonjour Sephy Comment utilisez-vous RelativeLayout avec fill_parent pour les 2 axes. J'utilise le textview dans la disposition de table et ce que je reçois est comme s'il commençait à défiler et s'arrête une fois arrivé à la fin du texte, je pourrai voir ces textes à l'écran qui montrent comment utiliser RelativeLayout et plus tard commence à partir de l'application simple.En bref seulement l'application simple est ce qui a disparu et pas le texte intégral comme indiqué par u. – Remmyabhavan

+0

Pourriez-vous s'il vous plaît partager votre code avec moi? – Remmyabhavan

+0

Ok, je vais poster mon code, mais c'est assez similaire au vôtre. – Sephy

0

essayer ceci:

<TextView 
android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true"     
    android:singleLine="true"   
    android:ellipsize="marquee" 
    android:fadingEdge="horizontal" 
    android:marqueeRepeatLimit="marquee_forever" 
    android:scrollHorizontally="true" 
    android:textColor="#ff4500" 
    android:text="Simple application that shows how to use RelativeLayout " 
    android:focusable="true" 
    android:focusableInTouchMode="true" android:freezesText="true"></TextView> 
+0

Merci Jorgesys. si nous définissons true focusable, cela ne fonctionne que si le contrôle a le focus.Au lieu de supprimer la mise au point et définir sélectionné comme vrai, il fonctionne très bien. Il ne fonctionne pas dans l'émulateur android 1.5. J'essaye pour cela. – Remmyabhavan

+0

Salut Reshmi, oui certainement, il faut avoir le focus pour travailler, et cela fonctionne aussi sur Android 1.5 Emulator, installez le dernier SDK. – Jorgesys

0

Guys, TextView fait défiler son texte UNIQUEMENT quand il est concentré. Dès qu'il perd la mise au point, le défilement du texte s'arrête.

+0

C'est pourquoi nous avons ajouté .setSelected (true); – Sephy

2

Si vous voulez faire défiler en continu, vous devez utiliser dans votre xml:

android:ellipsize="marquee" 
    android:fadingEdge="horizontal" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:marqueeRepeatLimit="marquee_forever" 
    android:scrollHorizontally="true" 
    android:selectAllOnFocus="true" 
    android:singleLine="true" 

Il ne faut pas mettre setSelected (true); dans le fichier

PS. Vous devez seulement cliquer dessus lorsque le focus change.