Текст выделения в Android

Как я могу использовать текст marquee в приложении Android?

Solutions Collecting From Web of "Текст выделения в Android"

Вот пример:

public class TextViewMarquee extends Activity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView) this.findViewById(R.id.mywidget); tv.setSelected(true); // Set focus to the textview } } 

Файл xml с текстом:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/mywidget" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:maxLines="1" 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 marquee, with a long text" /> </RelativeLayout> 
 android:ellipsize="marquee" 

Это работает только тогда, когда ваш TextView имеет фокус.

 TextView textView = (TextView) this.findViewById(R.id.textview_marquee); textView.setEllipsize(TruncateAt.MARQUEE); textView.setText("General Information... general information... General Information"); textView.setSelected(true); textView.setSingleLine(true); 

Чтобы заставить это работать, мне пришлось использовать ВСЕ три вещи (эллипсис, выбранные и одиночные), упомянутые уже:

 TextView tv = (TextView)findViewById(R.id.someTextView); tv.setSelected(true); tv.setEllipsize(TruncateAt.MARQUEE); tv.setSingleLine(true): 

Xml-код

  <TextView android:id="@+id/txtTicker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_gravity="center_horizontal" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:freezesText="true" android:gravity="center_horizontal" android:marqueeRepeatLimit="marquee_forever" android:paddingLeft="5dip" android:paddingRight="5dip" android:scrollHorizontally="true" android:shadowColor="#FF0000" android:shadowDx="1.5" android:shadowDy="1.3" android:shadowRadius="1.6" android:singleLine="true" android:textColor="@android:color/white" android:textSize="20sp" android:textStyle="bold" > </TextView> 

Ява

 txtEventName.setSelected(true); 

Если текст невелик, добавьте пробел до и после текста

 txtEventName.setText("\t \t \t \t \t \t"+eventName+"\t \t \t \t \t \t"); 

Просто поместите эти параметры в свой TextView – он работает: D

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

И вам также нужно setSelected(true) :

 my_TextView.setSelected(true); 

Привет, Кристофер

Я обнаружил проблему с выделенной областью, что ее нельзя использовать для коротких строк (поскольку ее функция состоит только в том, чтобы показывать длинные строки).

Я предлагаю использовать Webview. Если вы хотите перемещать короткие строки по горизонтали. Main_Activity.java Код: `

  WebView webView; webView = (WebView)findViewById(R.id.web); String summary = "<html><FONT color='#fdb728' FACE='courier'><marquee behavior='scroll' direction='left' scrollamount=10>" + "Hello Droid" + "</marquee></FONT></html>"; webView.loadData(summary, "text/html", "utf-8"); // Set focus to the textview ` 

Main_activity.xml код:

 <WebView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/web" ></WebView> 

Как и параметры XML, идентифицированные droidgren, мои тесты показали, что если текст, который вы хотите отобразить, короче, чем ширина текстового поля, тогда область выделения не будет прокручиваться вообще. Возможные решения заключаются в том, чтобы установить ширину представления на размер, меньший, чем длина текста, или связать строку с самим собой 2 или 3 раза, с подходящим промежутком между пробелами, чтобы прокрутка выглядела нормально.

Добавить код ниже в XML

  <TextView android:text="Shops NearBy textdf fsdgsdgsdg dsgtsgsdgsdgsg" android:id="@+id/txtEventName" android:ellipsize="marquee" android:marqueeRepeatLimit ="marquee_forever" android:focusable="true" android:focusableInTouchMode="true" android:scrollHorizontally="true" android:singleLine="true"/> 

В Java добавьте следующий код:

  TextView txtEventName=(TextView)findViewById(R.id.txtEventName); txtEventName.setSelected(true); 

Я пробовал все вышеперечисленное, но для меня это не сработало. Когда я добавляю

 android:clickable="true" 

То он отлично работает для меня. Я не знаю, почему. Но я счастлив работать над этим.

Вот мой полный ответ.

 android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:clickable="true" 

Используйте это, чтобы установить Marque:

  final TextView tx = (TextView) findViewById(R.id.textView1); tx.setEllipsize(TruncateAt.MARQUEE); tx.setSelected(true); tx.setSingleLine(true); tx.setText("Marquee needs only three things to make it run and these three things are mentioned above."); 

Вам не нужно использовать « android: marqueeRepeatLimit =« marquee_forever »в xml-файле. Marquee будет работать даже без этого.

Это будет эквивалентно «концу»:

 where = TruncateAt.END 

Вы можете использовать TextView или свой собственный TextView. Последнее – когда текстовое изображение не может постоянно фокусироваться.

Во-первых, вы можете использовать TextView или пользовательский TextView в качестве прокручиваемого текстового представления в вашем XML-файле layout следующим образом:

 <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.example.myapplication является примером имени пакета и его следует заменить на собственное имя пакета.

Затем в случае использования CustomTextView вы должны определить класс CustomTextView:

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