TextView字幕不工作

我试图使用字幕,而不是在这里工作是我的代码,请让我知道哪里会出错

<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"> 

编辑(代表Adil Hussain):

需要在代码中设置textView.setSelected(true)才能工作。

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

是唯一必需的属性,甚至可以使用layout_width=0dp定义的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(true); 也在我的活动中

非常简单的工作代码:

为无限滚动文字

  <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 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" /> 

我正在使用minSDK = 14,并且很好奇这些变化会起什么作用。 我结束了:

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

除了其他格式的东西。 我不需要scrollHoriontally,focusable或focusableInTouchMode。

这组确实需要打电话给

 setSelected(true) 

我觉得有趣的是singleLine据说已经被弃用了,build议用maxLines = 1来取代它。除了 – 当我这样做的时候,单独的变化就阻止了文本的滚动。 人们会希望当singleline最终咬住灰尘,它的所有当前行为将由maxLines触发…

只要添加如上所述的那些:

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

和!! 你必须在你的java代码中使用TextView.setSelected(true)。

如果你有一个EditText(这是一个input)的input窗体,EditText将是默认情况下在窗体中具有焦点和select的EditText。 现在,如果你强制通过TextView.setSelected(true),TextView将最终做无论如何选框。

所以整个想法是使TextView小部件集中和select,使选框工作。

我遇到了同样的问题。 Amith GC的答案(第一个答案被接受)是正确的,但有时textview.setSelected(true); 在文本视图不能始终获得焦点时不起作用。 所以,为了确保TextView Marquee的工作,我必须使用自定义的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.example.myapplication是一个示例包名称,应该由您自己的包名称replace。

希望这会帮助你。 干杯!

我经历了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.setSelected(true); 

您必须将这些属性强制添加到选取框

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

此代码正常工作,但如果你的屏幕尺寸不填充此文本,它不会移动尝试到文本的空白结尾

是的, marquee_forever也适用于TextView固定宽度的情况。 (例如android:layout_width =“120dp”)

必须属性是:

  1. 机器人:可聚焦=“真”
  2. 机器人:focusableInTouchMode = “真”
  3. android:singleLine =“true”//如果缺less文本出现在多行。

工作代码:

 <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!" /> 

只要把这些参数在你的TextView中。 有用 :)

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

`

我创build了一个自定义类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); } } 

当你渴望的时候,你可以开始马克

 //textView.setSelected(true); No need of Selection.. textview.setAlwaysMarquee(true); 
  <TextView android:ellipsize="marquee" android:singleLine="true" .../> 

必须在代码中调用

 textView.setSelected(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); } 

android:focusable =“true”和android:focusableInTouchMode =“true”是必不可less的….

因为我没有这些线testing所有其他人,结果是没有选框。 当我添加这些,它开始marquee ..

在这里输入图像描述

  import android.app.Activity; import android.os.Bundle; import android.text.TextUtils.TruncateAt; import android.widget.TextView; public class MainActivity extends Activity { private TextView textview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textview = (TextView) this.findViewById(R.id.textview); textview.setSelected(true); textview.setEllipsize(TruncateAt.MARQUEE); textview.setSingleLine(true); } } 

更多的参考请点击这里http://androiddhina.blogspot.in/2015/10/marquee-effect-in-android-textview.html

大部分的答案是相同的,
但也注意到,在某些情况下,如果没有为容器指定宽度,选框不起作用。
例如,如果您在父容器中使用重量

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

字幕可能无法正常工作。