Android marquise textview múltipla

votos
3

Em temos muitos textview que pode ter muito texto para que tenha feito

android:marqueeRepeatLimit=marquee_forever
    android:ellipsize=marquee
    android:singleLine=true
    android:scrollHorizontally=true
    android:focusable=true
    android:focusableInTouchMode=true 

Para primeiro texto visualizá-lo funciona bem, mas por outro ele não está funcionando, se alguém ter feito isso para outra textview em atividade, então por favor me ajude.

Obrigado.

Publicado 10/12/2011 em 11:39
fonte usuário
Em outras línguas...                            


2 respostas

votos
7

É muito fácil prolongar a sua classe com TextView e substituir seguintes métodos

package com.az.app;

import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView;

public class ScrollingTextView extends TextView {

    public ScrollingTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public ScrollingTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ScrollingTextView(Context context) {
        super(context);
    }

    // ===========================================================
    // Constants
    // ===========================================================

    // ===========================================================
    // Fields
    // ===========================================================

    // ===========================================================
    // Constructors
    // ===========================================================

    // ===========================================================
    // Getter & Setter
    // ===========================================================

    // ===========================================================
    // Methods for/from SuperClass/Interfaces
    // ===========================================================
    @Override
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
        if (focused)
            super.onFocusChanged(focused, direction, previouslyFocusedRect);
    }

    @Override
    public void onWindowFocusChanged(boolean focused) {
        if (focused)
            super.onWindowFocusChanged(focused);
    }

    @Override
    public boolean isFocused() {
        return true;
    }
    // ===========================================================
    // Methods
    // ===========================================================

    // ===========================================================
    // Inner and Anonymous Classes
    // ===========================================================


}

e em sua XML fazer isso

<com.az.app.ScrollingTextView
                        android:id="@+id/TextView02"
                        android:layout_width="140dp"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:layout_toRightOf="@+id/ImageView01"
                        android:ellipsize="marquee"
                        android:focusable="true"
                        android:focusableInTouchMode="true"
                        android:marqueeRepeatLimit="marquee_forever"
                        android:scrollHorizontally="true"
                        android:singleLine="true"
                        android:text="This is a really very very very very very long text "
                        android:textAppearance="?android:attr/textAppearanceSmall" />
                </RelativeLayout>
<com.az.app.ScrollingTextView
                        android:id="@+id/TextView03"
                        android:layout_width="140dp"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:layout_toRightOf="@+id/ImageView01"
                        android:ellipsize="marquee"
                        android:focusable="true"
                        android:focusableInTouchMode="true"
                        android:marqueeRepeatLimit="marquee_forever"
                        android:scrollHorizontally="true"
                        android:singleLine="true"
                        android:text="This is a really very very very very very long text "
                        android:textAppearance="?android:attr/textAppearanceSmall" />
                </RelativeLayout>

Agora todos os TextViews será desdobramento.

Update:
Note que ele não funciona sem android:singleLine="true". Use-o com android:maxLines="1", Embora saibamos que é obsoleto.

Respondeu 14/01/2014 em 12:32
fonte usuário

votos
0

@Sathish Sim, pode, eu fiz isso. A seguir é o meu código para dois textview marquise em xamarin.android

xml

<TextView
            android:text=""
            android:singleLine="true"
            android:background="#cc2900"
            android:ellipsize="marquee"
            android:textColor="#FFFFFF"
            android:textSize="15dp"
            android:paddingTop="4dp"
            android:paddingBottom="4dp"
            android:layout_marginLeft="1dp"
            android:marqueeRepeatLimit="marquee_forever"
            android:scrollHorizontally="true"
            android:id="@+id/TextView03"
            android:padding="5dip"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
      <TextView
            android:text=""
            android:singleLine="true"
            android:background="#cc2900"
            android:ellipsize="marquee"
            android:textColor="#FFFFFF"
            android:textSize="15dp"
            android:paddingTop="4dp"
            android:paddingBottom="4dp"
            android:layout_marginLeft="1dp"
            android:marqueeRepeatLimit="marquee_forever"
            android:scrollHorizontally="true"
            android:id="@+id/txtinternational"
            android:padding="5dip"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

e em sua atividade você só tem que definir o foco para seus todos os TextViews:

TextView shorts = FindViewById<TextView>(Resource.Id.TextView03);
            shorts.Selected = true;

TextView internationalshorts = FindViewById<TextView>(Resource.Id.txtinternational);
        internationalshorts.Selected = true;
Respondeu 09/09/2017 em 13:59
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more