Я пытался использовать 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
теперь работает :) Код прикреплен ниже
<TextView
android:text="START | lunch 20.00 | Dinner 60.00 | Travel 60.00 | Doctor 5000.00 | lunch 20.00 | Dinner 60.00 | Travel 60.00 | Doctor 5000.00 | END"
android:id="@+id/MarqueeText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:paddingLeft="15dip"
android:paddingRight="15dip"
android:focusable="true"
android:focusableInTouchMode="true"
android:freezesText="true">
Редактирование (от имени Адиля Хуссейна):
textView.setSelected(true)
должен быть установлен в коде позади, чтобы это работало.
android:singleLine="true"
android:ellipsize="marquee"
являются единственными необходимыми атрибутами, и прокрутка даже работает с layout_weight
, определенным с layout_width=0dp
.
Вот пример кода:
<TextView
android:id="@+id/scroller"
android:singleLine="true"
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#FFFFFF"
android:text="Some veryyyyy long text with all the characters that cannot fit in screen, it so sad :( that I will not scroll"
android:layout_marginLeft="4dp"
android:layout_weight="3"
android:layout_width="0dp"
android:layout_height="wrap_content"
/>
Но самое главное, что подразумевается или явно TextView
должен быть выбран.
Вы можете сделать это с помощью:
TextView txtView=(TextView) findViewById(R.id.scroller);
txtView.setSelected(true);
Эти атрибуты должны быть включены в тег textview
, чтобы обеспечить прокрутку.
Все остальное необязательно.
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="fill_parent"
android:ellipsize="marquee"
Я столкнулся с той же проблемой и эта дискуссия помогла мне просто замените эту строку
android:maxLines="1"
с этой строки в XML
android:singleLine="true"
и это работает
txtView линии.setSelected(истина);
также был в моей деятельности.
Очень простой код, который работает:
Для плавной прокрутки текста
<TextView
android:id="@+id/textView_News_HeadLine"
style="@style/black_extra_large_heading_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="8dp"
android:ellipsize="marquee"
android:marqueeRepeatLimit="-1"
android:singleLine="true"
android:text="HeadLine: Banglawash To be Continued" />
& вы должны должны написать от вашей активности
textView.setSelected(true);
Я пережила эту ситуацию, где шатер виджет TextView не работает. Однако следить за этим и я уверен, что это будет работать. :)
<TextView
android:id="@+id/tv_marquee"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:freezesText="true"
android:maxLines="1"
android:scrollHorizontally="true"
android:text="This is a sample code of marquee and it works"/>
и программно добавить эти 2 строчки...
tvMarquee.setHorizontallyScrolling(true);
tvMarquee.setSelected(true);
tvMarquee.setSelected(True) не требуется в случае, если один из Вид уже сосредоточился и setSelected сделает его работу. Нет необходимости использовать.
android:singleLine="true"
это устаревший и выше кодов.
Рабочий Код:
<TextView
android:id="@+id/scroller"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:singleLine="true"
android:text="Some veryyyyy long text with all the characters that cannot fit in screen, it so sad :( that I will not scroll"
android:textAppearance="?android:attr/textAppearanceLarge" />
Я'м работает с основным направлением развития операционной системы=14 и было любопытно, что набор этих вариантов будет работать. Я в конечном итоге с:
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
в дополнение к другим вещам форматирования. Я не'т нужна scrollHoriontally, фокусируемый, или focusableInTouchMode.
Этот набор сделала требуют вызова
setSelected(true)
Что я нахожу интересным является то, что однострочный якобы устарел, с рекомендацией заменить его макс. кол-во строк = 1. За исключением - когда я делаю то, что в одиночку изменить останавливает текста с прокруткой. Хотелось бы надеяться, что когда однострочный в конце концов падает в пыль, что все его нынешнее поведение будет вызвано макс. кол-во строк...
Я'вэ столкнулись с той же проблемой. 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.example.myapplication.CustomTextView
android:id="@+id/tvScrollingMessage"
android:text="@string/scrolling_message_main_wish_list"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit ="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/black"
android:gravity="center"
android:textColor="@color/white"
android:textSize="15dp"
android:freezesText="true"/>
Примечание: В приведенном выше фрагменте кода в COM.пример.мое_приложение пример имя пакета и должно быть заменено на собственное имя пакет.
Надеюсь, что это поможет вам. Ура!
Просто добавить эти как сказали выше:
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit ="marquee_forever"
И!! вы должны использовать виджет TextView.setSelected(истина) внутри кода Java.
Причиной для бегущей строки не работает с некоторыми из парней в этой статье , если у вас есть форма ввода с полей EditText ( который является входным), поля EditText будет с фокусом и выбором по умолчанию в форме. Теперь, если вы заставите его через поле TextView.setSelected(true), то поле TextView в конечном итоге сделать шатер несмотря ни на что.
Так вся идея в том, чтобы сделать виджет TextView, виджет сосредоточенным и выбранный, чтобы сделать шатер работе.
Вы должны добавить эти атрибуты, которые принудительны для шатра
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:singleLine="true"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
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 пробел в конце текста
Просто поставить эти параметры в поле TextView. Это работает :)
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit ="marquee_forever"
android:scrollHorizontally="true"
android:focusable="true"
android:focusableInTouchMode="true"
`
Иметь собственную скорость прокрутки и гибкость настройки шатер свойства, использовать следующие:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
android:lines="1"
android:id="@+id/myTextView"
android:padding="4dp"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="Simple application that shows how to use marquee, with a long text" />
В вашей деятельности:
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);
}
Да, marquee_forever также работает в случае фиксированная ширина текстового представления. (например, android:layout_width="по-120dp и")
Должны быть в наличии необходимые атрибуты:
Рабочий код:
<TextView
android:id="@+id/mediaTitleTV"
android:layout_width="220dp"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:text="Try Marquee, it works with fixed size textview smoothly!" />
Я создал пользовательский класс 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);
Большинство ответов являются идентичными, но также обратите внимание, что в некоторых случаях бегущей строки не будет работать без указания ширины в дипы для контейнера. Например, если вы используете вес в Родительском контейнере
android:layout_width="0dp"
android:layout_weight="0.5"
шатер может не работать.
андроид:фокусируемый=на"истинный" и андроид:focusableInTouchMode=на"истинный" и имеют важное значение....
Потому что я проверил все остальные без этих строк, и результат был не шатер. Когда я добавить эти его начали шатер..