TextView Marquee не работает

Я пытался использовать marquee, но он не работает. вот мой код, пожалуйста, дайте мне знать, где я ошибаюсь

<TextView
   android:text="lunch 20.00 | Dinner 60.00 | Travel 60.00 | Doctor 5000.00 | lunch 20.00 | Dinner 60.00 | Travel 60.00 | Doctor 5000.00"
   android:id="@+id/TextView02"
   android:layout_width="200dip"
   android:layout_height="wrap_content"
   android:marqueeRepeatLimit="marquee_forever"
   android:ellipsize="marquee"
   android:singleLine="true"
   android:focusable="true"
   android:inputType="text"
   android:maxLines="1">
</TextView>

Я использую android SDK 2.0.1

Комментарии к вопросу (3)
Решение

теперь работает :) Код прикреплен ниже

Редактирование (от имени Адиля Хуссейна):

textView.setSelected(true) должен быть установлен в коде позади, чтобы это работало.

Комментарии (19)
android:singleLine="true"
android:ellipsize="marquee"

являются единственными необходимыми атрибутами, и прокрутка даже работает с layout_weight, определенным с layout_width=0dp.

Вот пример кода:

Но самое главное, что подразумевается или явно TextView должен быть выбран.

Вы можете сделать это с помощью:

TextView txtView=(TextView) findViewById(R.id.scroller);
txtView.setSelected(true);
Комментарии (7)

Эти атрибуты должны быть включены в тег textview, чтобы обеспечить прокрутку.

Все остальное необязательно.

android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="fill_parent"
android:ellipsize="marquee"
Комментарии (4)

Я столкнулся с той же проблемой и эта дискуссия помогла мне просто замените эту строку

android:maxLines="1"

с этой строки в XML

android:singleLine="true"

и это работает txtView линии.setSelected(истина); также был в моей деятельности.

Комментарии (3)

Очень простой код, который работает:

Для плавной прокрутки текста

& вы должны должны написать от вашей активности

textView.setSelected(true);
Комментарии (0)

необходимо позвонить в код

textView.setSelected(true);
Комментарии (0)

Я пережила эту ситуацию, где шатер виджет TextView не работает. Однако следить за этим и я уверен, что это будет работать. :)

и программно добавить эти 2 строчки...

tvMarquee.setHorizontallyScrolling(true);
tvMarquee.setSelected(true);

tvMarquee.setSelected(True) не требуется в случае, если один из Вид уже сосредоточился и setSelected сделает его работу. Нет необходимости использовать.

android:singleLine="true"

это устаревший и выше кодов.

Комментарии (1)

Рабочий Код:

Комментарии (1)

Я'м работает с основным направлением развития операционной системы=14 и было любопытно, что набор этих вариантов будет работать. Я в конечном итоге с:

android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"

в дополнение к другим вещам форматирования. Я не'т нужна scrollHoriontally, фокусируемый, или focusableInTouchMode.

Этот набор сделала требуют вызова

setSelected(true)

Что я нахожу интересным является то, что однострочный якобы устарел, с рекомендацией заменить его макс. кол-во строк = 1. За исключением - когда я делаю то, что в одиночку изменить останавливает текста с прокруткой. Хотелось бы надеяться, что когда однострочный в конце концов падает в пыль, что все его нынешнее поведение будет вызвано макс. кол-во строк...

Комментарии (0)

Я'вэ столкнулись с той же проблемой. Amith ГК'ы ответ(первый ответ проверил как принято) - это хорошо, но иногда виджет TextView.setSelected(true); в не'т работу, когда представление текста может'т получить в фокусе все время. Так, чтобы виджет TextView шатер работает, пришлось использовать специальный виджет TextView.

public class CustomTextView extends TextView {
    public CustomTextView(Context context) {
        super(context);
    }
    public CustomTextView(Context context, AttributeSet attrs) {
        super(context, attrs);

    }

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

    }

    @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;
    }
}

А затем, вы можете использовать пользовательский виджет TextView, как прокруткой текста в макете .такой XML-файл:

Примечание: В приведенном выше фрагменте кода в COM.пример.мое_приложение пример имя пакета и должно быть заменено на собственное имя пакет.

Надеюсь, что это поможет вам. Ура!

Комментарии (1)

Просто добавить эти как сказали выше:

    android:singleLine="true" 
    android:ellipsize="marquee"
    android:marqueeRepeatLimit ="marquee_forever"

И!! вы должны использовать виджет TextView.setSelected(истина) внутри кода Java.

Причиной для бегущей строки не работает с некоторыми из парней в этой статье , если у вас есть форма ввода с полей EditText ( который является входным), поля EditText будет с фокусом и выбором по умолчанию в форме. Теперь, если вы заставите его через поле TextView.setSelected(true), то поле TextView в конечном итоге сделать шатер несмотря ни на что.

Так вся идея в том, чтобы сделать виджет TextView, виджет сосредоточенным и выбранный, чтобы сделать шатер работе.

Комментарии (0)

Вы должны добавить эти атрибуты, которые принудительны для шатра

 android:ellipsize="marquee"     
 android:focusable="true"    
 android:focusableInTouchMode="true"     
 android:singleLine="true"     
 android:marqueeRepeatLimit="marquee_forever"     
 android:scrollHorizontally="true"
Комментарии (0)
package com.app.relativejavawindow;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.text.TextUtils.TruncateAt;
import android.view.Menu;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class MainActivity extends Activity {
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final RelativeLayout relativeLayout = new RelativeLayout(this);
        final RelativeLayout relativeLayoutbotombar = new RelativeLayout(this);
        textView = new TextView(this);
        textView.setId(1);

        RelativeLayout.LayoutParams relativlayparamter = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.MATCH_PARENT);

        RelativeLayout.LayoutParams relativlaybottombar = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
        relativeLayoutbotombar.setLayoutParams(relativlaybottombar);

        textView.setText("Simple application that shows how to use marquee, with a long ");
        textView.setEllipsize(TruncateAt.MARQUEE);
        textView.setSelected(true);
        textView.setSingleLine(true);

        relativeLayout.addView(relativeLayoutbotombar);
        relativeLayoutbotombar.addView(textView);
        //relativeLayoutbotombar.setBackgroundColor(Color.BLACK);
        setContentView(relativeLayout, relativlayparamter);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

этот код работать правильно, но если размер УР экран не набиваю этот текст он не будет двигаться, пытаться palcing пробел в конце текста

Комментарии (0)

Используйте следующую строку в ваш код:

TextView.setSelected(true);
Комментарии (0)

Просто поставить эти параметры в поле TextView. Это работает :)

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

`

Комментарии (0)

Иметь собственную скорость прокрутки и гибкость настройки шатер свойства, использовать следующие:

В вашей деятельности:

private void setTranslation() {
        TranslateAnimation tanim = new TranslateAnimation(
                TranslateAnimation.ABSOLUTE, 1.0f * screenWidth,
                TranslateAnimation.ABSOLUTE, -1.0f * screenWidth,
                TranslateAnimation.ABSOLUTE, 0.0f,
                TranslateAnimation.ABSOLUTE, 0.0f);
        tanim.setDuration(1000);
        tanim.setInterpolator(new LinearInterpolator());
        tanim.setRepeatCount(Animation.INFINITE);
        tanim.setRepeatMode(Animation.ABSOLUTE);

        textView.startAnimation(tanim);
    } 
Комментарии (0)

Да, marquee_forever также работает в случае фиксированная ширина текстового представления. (например, android:layout_width="по-120dp и")

Должны быть в наличии необходимые атрибуты:

  1. андроид:фокусируемый=то"Правда" и
  2. андроид:focusableInTouchMode=на"истинный"и
  3. для Android:однострочный=на"Правда и" // если это's отсутствует текст в многострочный.

Рабочий код:

Комментарии (1)

Я создал пользовательский класс AlwaysMarqueTextView

public class AlwaysMarqueeTextView extends TextView
{
    protected boolean a;

    public AlwaysMarqueeTextView(Context context)
    {
        super(context);
        a = false;
    }

    public AlwaysMarqueeTextView(Context context, AttributeSet attributeset)
    {
        super(context, attributeset);
        a = false;
    }

    public AlwaysMarqueeTextView(Context context, AttributeSet attributeset, int i)
    {
        super(context, attributeset, i);
        a = false;
    }

    public boolean isFocused()
    {
        return a || super.isFocused();
    }

    public void setAlwaysMarquee(boolean flag)
    {
        setSelected(flag);
        setSingleLine(flag);
        if(flag)
        setEllipsize(TruncateAt.MARQUEE);
        a = flag;
    }

    @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);
    }
}

И вы можете методы startmarquee при желании.. как

//textView.setSelected(true); No need of Selection..
textview.setAlwaysMarquee(true); 
Комментарии (2)

Большинство ответов являются идентичными, но также обратите внимание, что в некоторых случаях бегущей строки не будет работать без указания ширины в дипы для контейнера. Например, если вы используете вес в Родительском контейнере

android:layout_width="0dp"
android:layout_weight="0.5"

шатер может не работать.

Комментарии (0)

андроид:фокусируемый=на"истинный" и андроид:focusableInTouchMode=на"истинный" и имеют важное значение....

Потому что я проверил все остальные без этих строк, и результат был не шатер. Когда я добавить эти его начали шатер..

Комментарии (0)