Textview中的Marquee与动态数据android

时间:2016-01-30 11:33:38

标签: android textview marquee

  

我正在SELECT t1.*, t2.* FROM tbl_setup t1, tbl_specialty t2 WHERE t1.app_id = 12 中使用marquee来获取TextView中的文字。这是我的xml

webservice APIs
  

这是我的活动,

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:background="#4a4a4a"> 

    <!-- Player Header -->
    <LinearLayout 
        android:id="@+id/player_header_bg"
        android:layout_width="fill_parent"
        android:layout_height="60dip"
        android:background="@layout/bg_player_header"
        android:layout_alignParentTop="true"
        android:paddingLeft="5dp"
        android:paddingRight="5dp">

        <!-- Song Title, here I want to use marquee -->
        <TextView 
            android:id="@+id/songTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:singleLine="true"
            android:ellipsize="marquee" 
            android:textColor="#ffffff"
            android:marqueeRepeatLimit="1"
            android:scrollHorizontally="true" 
            android:paddingLeft="15dip" 
            android:paddingRight="15dip"
            android:selectAllOnFocus="true" 
            android:focusable="true" 
            android:focusableInTouchMode="true" 
            android:freezesText="true"/> 

        <!-- Playlist button -->
        <!-- <ImageButton 
            android:id="@+id/btnPlaylist"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:src="@drawable/btn_playlist"
            android:background="@null"/> -->
    </LinearLayout>

    <!-- Song Thumbnail Image -->
    <LinearLayout 
        android:id="@+id/songThumbnail"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:gravity="center"
        android:layout_below="@id/player_header_bg">

    <ImageView 

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/adele"/>    
    </LinearLayout>

    <!-- Player Footer -->
    <LinearLayout 
        android:id="@+id/player_footer_bg"
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:layout_alignParentBottom="true"
        android:background="@layout/bg_player_footer"
        android:gravity="center">

        <!-- Player Buttons -->
        <LinearLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_vertical"
            android:background="@layout/rounded_corner"
            android:paddingLeft="10dp"
            android:paddingRight="10dp">
            <!-- Previous Button -->
            <ImageButton
                android:id="@+id/btnPrevious" 
                android:src="@drawable/btn_previous"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@null"/>
            <!-- Backward Button -->
            <ImageButton 
                android:id="@+id/btnBackward"
                android:src="@drawable/btn_backward"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@null"/>
            <!-- Play Button -->
            <ImageButton 
                android:id="@+id/btnPlay"
                android:src="@drawable/btn_play"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@null"/>
            <!-- Forward Button -->
            <ImageButton 
                android:id="@+id/btnForward"
                android:src="@drawable/btn_forward"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@null"/>
            <!-- Next Button -->
            <ImageButton 
                android:id="@+id/btnNext"
                android:src="@drawable/btn_next"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@null"/>
        </LinearLayout>
    </LinearLayout>

    <!-- Progress Bar/Seek bar -->
    <SeekBar
            android:id="@+id/songProgressBar"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:layout_marginRight="20dp" 
             android:layout_marginLeft="20dp"
             android:layout_marginBottom="20dp"
             android:layout_above="@id/player_footer_bg"
             android:thumb="@drawable/seek_handler"
             android:progressDrawable="@drawable/seekbar_progress"
             android:paddingLeft="17dp"
             android:paddingRight="6dp"/>

    <!-- Timer Display -->
    <LinearLayout 
        android:id="@+id/timerDisplay"
        android:layout_above="@id/songProgressBar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginRight="20dp"
        android:layout_marginLeft="20dp"
        android:layout_marginBottom="10dp">
        <!-- Current Duration Label -->
        <TextView 
            android:id="@+id/songCurrentDurationLabel"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="left"
            android:textColor="#eeeeee"
            android:textStyle="bold"/>
        <!-- Total Duration Label -->
        <TextView 
            android:id="@+id/songTotalDurationLabel"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="right"
            android:textColor="#04cbde"
            android:textStyle="bold"/>
    </LinearLayout>

    <!-- Repeat / Shuffle buttons -->
    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@id/timerDisplay"
        android:gravity="center">
        <!-- Repeat Button -->
        <ImageButton 
            android:id="@+id/btnRepeat"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/btn_repeat"
            android:layout_marginRight="5dp"
            android:background="@null"/>

        <!-- Shuffle Button -->        
        <!--  <ImageButton 
            android:id="@+id/btnShuffle" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/btn_shuffle"
            android:layout_marginLeft="5dp"
            android:background="@null"/> -->
    </LinearLayout>
</RelativeLayout>
  

但它不起作用。请帮助我找出我在这里缺少的东西。

3 个答案:

答案 0 :(得分:1)

我已经在评论中提到了我提到的答案。

虽然你为实现Marquee编写的代码很好而且正确,但我们需要注意的是,

  

将显示的文本应大于文本的长度   设备屏幕宽度或需要固定宽度小于长度   传入字符串,无论是静态文本还是动态文本。

感谢您提及@devraj。

答案 1 :(得分:0)

请试试这个,

Xml文件

只需替换你的textview,我删除了一些不寻常的标签,它对我有用。

<TextView
            android:id="@+id/songTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:ellipsize="marquee"
            android:scrollHorizontally="true"
            android:marqueeRepeatLimit="marquee_forever"
            android:paddingLeft="15dip"
            android:paddingRight="15dip"
            android:singleLine="true"
            android:textColor="#ffffff" />

Java类

package com.example.demoproject;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

    public class MainActivity extends Activity {

        private TextView songTitleLabel;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            songTitleLabel = (TextView) findViewById(R.id.songTitle);
            songTitleLabel.setSelected(true);
            songTitleLabel.setText("LOREM IPSUM DUMMY TEXT. LOREM IPSUM DUMMY TEXTLOREM IPSUM DUMMY TEXT. LOREM IPSUM DUMMY TEXTLOREM IPSUM DUMMY TEXT.");
        }
    }

答案 2 :(得分:0)

  

我想提一下它是一个完美的答案。我见过很多   关于此的帖子但没有找到确切的答案   我完全满足所有条件的特殊情况   选框所需。我得到了正确的答案   @ Ragu Swaminatha &#34; String的长度(您想在选框中使用)   应该大于设备屏幕的宽度&#34; 这就是   完美答案。 String是来自API还是静态的。