代码之家  ›  专栏  ›  技术社区  ›  amithgc

文本视图字幕不工作[重复]

  •  114
  • amithgc  · 技术社区  · 14 年前

    这个问题已经有了答案:

    我试过用天棚,但它不起作用。 这是我的密码,请告诉我哪里出错了

    <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

    21 回复  |  直到 7 年前
        1
  •  251
  •   Prokash Sarkar    9 年前

    现在工作: 代码附在下面

    <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) 需要在代码隐藏中设置才能使其工作。

        2
  •  83
  •   Shardul    13 年前
    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);
    
        3
  •  23
  •   sajamaum    13 年前

    这些属性必须包含在 textview 标记以允许滚动。

    其他一切都是可选的。

    android:focusable="true"
    android:focusableInTouchMode="true"
    android:layout_width="fill_parent"
    android:ellipsize="marquee"
    
        4
  •  20
  •   Dulal    12 年前

    我也面临同样的问题,这次讨论帮助我取代了这句话

    android:maxLines="1"
    

    使用XML中的此行

    android:singleLine="true"
    

    它工作 线 txtView.setSelected(true); 也在我的活动中。

        5
  •  12
  •   Shihab Uddin    11 年前

    非常简单的工作代码:

    用于无限滚动文本

                <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);
    
        6
  •  8
  •   Kirit Vaghela    12 年前

    工作代码:

    <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" />
    
        7
  •  7
  •   ssdscott    10 年前

    我正在和minsdk=14一起工作,我很好奇这些变化中的哪一种会起作用。我的结局是:

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

    除了其他格式的东西。我不需要ScrollHorionTally、Focusable或FocusableIntouchmode。

    这套需要打电话给

    setSelected(true)
    

    我觉得有趣的是,据称单线图已被否决,建议用maxlines=1替换它。但是-当我这样做的时候,这个变化本身就阻止了文本滚动。人们希望,当单线最终咬住灰尘时,它当前的所有行为都将由Maxlines触发…

        8
  •  7
  •   Hun    8 年前
     <TextView
      android:ellipsize="marquee"
      android:singleLine="true"
      .../>
    

    必须调用代码

    textView.setSelected(true);
    
        9
  •  7
  •   Vijay E    7 年前

    我经历过这样的情况: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"/>
    

    以编程方式添加这两行…

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

    如果视图中的任何一个已经聚焦,则需要TvMarquee.SetSelected(true),SetSelected将使其工作。 无需使用。

    android:singleLine="true"
    

    不推荐使用,以上代码有效。

        10
  •  6
  •   David Roman    8 年前

    我也遇到过同样的问题。amith gc的答案(第一个被检查为接受的答案)是正确的,但有时text view.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;
        }
    }
    

    然后,您可以使用自定义文本视图作为layout.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是一个示例包名称,应替换为您自己的包名称。

    希望这对你有帮助。干杯!

        11
  •  5
  •   superlinux    11 年前

    只需添加上述内容:

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

    而且!你! 必须 在Java代码中使用TestVIEW.SETSETION(TRUE)。

    在这篇文章中,如果您有一个带有editText的输入表单(这是一个输入),那么在表单中,editText将是一个默认的具有焦点和选择的表单。现在,如果您强制它通过textview.setselected(true),无论什么,textview最终都会做字幕。

    因此,整个想法是使文本视图小部件集中,并选择使字幕工作。

        12
  •  4
  •   Mogsdad    9 年前

    必须将这些强制属性添加到字幕中

     android:ellipsize="marquee"     
     android:focusable="true"    
     android:focusableInTouchMode="true"     
     android:singleLine="true"     
     android:marqueeRepeatLimit="marquee_forever"     
     android:scrollHorizontally="true"
    
        13
  •  3
  •   harsha.kuruwita    11 年前
    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;
        }
    
    }
    

    此代码工作正常,但如果您的屏幕大小没有填充此文本,它将不会移动,请尝试在文本的空白处添加空格。

        14
  •  3
  •   Nima K    11 年前

    在代码中使用以下行:

    TextView.setSelected(true);
    
        15
  •  2
  •   Monika    11 年前

    对, 永远的玛姬 也适用于以下情况: 文本视图的固定宽度 . (例如android:layout_width=“120dp”)。

    必须具有以下属性:

    1. android:focusable=“真”
    2. android:focusableintouchmode=“真”
    3. android:singleline=“true”//如果缺少的文本出现在多行中。

    工作代码:

    <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!" />
    
        16
  •  2
  •   XYZ_deve    11 年前

    只需将这些参数放入文本视图。它的工作原理是:

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

    `

        17
  •  2
  •   Zar E Ahmer    10 年前

    我创建了一个自定义类 始终请求文本视图

    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); 
    
        18
  •  2
  •   Jaydev    7 年前

    要拥有自己的滚动速度和灵活性来自定义字幕属性,请使用以下选项:

    <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);
        } 
    
        19
  •  0
  •   poly    10 年前

    android:focusable=“true”和android:focusableintouchmode=“true”是必不可少的….

    因为我在没有这些线条的情况下测试了所有其他人,结果是没有选框。当我加上这些,它开始在天棚。

        20
  •  0
  •   Dhina k    9 年前

    导入android.app.activity;
    导入android.os.bundle;
    导入android.text.textutils.truncateat;
    导入android.widget.textview;
    
    公共类主活动扩展活动{
    私有文本视图文本视图;
    
    @重写
    创建时受保护的void(bundle savedinstancestate){
    super.oncreate(保存的状态);
    setContentView(r.layout.activity_-main);
    textView=(textView)this.findView byid(r.id.textView);
    textview.setselected(真);
    
    textview.setellipsize(truncateat.marquee);
    textview.setsingleline(真);
    }
    
    }
    < /代码> 
    
    

    有关更多参考,请单击此处http://androiddhina.blogspot.in/2015/10/marquee effect in android textview.html

     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

        21
  •  0
  •   Leo DroidCoder    8 年前

    大多数答案是相同的,
    但也要注意,在某些情况下,如果不指定容器的倾斜宽度,字幕将无法工作。
    例如,如果在父容器中使用weight

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

    天棚可能不起作用。