自定义类选取框文本在复杂布局中更改另一个文本视图时重新启动

时间:2016-12-20 07:54:23

标签: android-layout scroll media-player marquee android-framelayout

我有自己的marquee类实现,因为用户可以为我的音乐应用中的文本决定选取框行为(无滚动,滚动一次,滚动重复)。用户开始播放歌曲时会出现问题,因为它会不断更新布局中的计时器文本(id:tv_playtime)

<?xml version="1.0" encoding="utf-8"?>
 <FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
   <RelativeLayout
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >
        <RelativeLayout

            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:clickable="true"
            android:onClick="onButtonHomeClick">
            <ImageView

                android:layout_width="48dp"
                android:layout_height="48dp"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                 />
            <ImageView

                android:layout_width="64.67dp"
                android:layout_height="25.33dp"
                android:layout_alignParentTop="true"
                android:layout_marginLeft="2dp"

                android:background="@null"
                android:duplicateParentState="true"
                android:scaleType="fitStart"

                android:visibility="gone" />
        </RelativeLayout>
        <!--home buttons-->
        <TextView

            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="Media Player"
            android:textColor="@color/white"
            android:textSize="20dp" />
        <ImageView
            android:id="@+id/iv_settings_btn_passenger"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            />
    </RelativeLayout>
    <!--media player home-->
    <RelativeLayout

        android:layout_width="wrap_content"
        android:layout_height="36dp"
        >
        <ImageView

            android:layout_width="36dp"
            android:layout_height="36dp"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"

            android:tint="@color/white"
            android:visibility="invisible" />
        <ImageView

            android:layout_width="36dp"
            android:layout_height="36dp"

            />
        <ImageView

            android:layout_width="36dp"
            android:layout_height="36dp"

            />
        <ImageView

            android:layout_width="36dp"
            android:layout_height="36dp"

          />
    </RelativeLayout>
    <!-- playing indicator-->
    <RelativeLayout

        android:layout_width="match_parent"
        android:layout_height="370dp"
            >
        <RelativeLayout

            android:layout_width="240dp"
            android:layout_height="240dp"
            android:layout_centerInParent="true"
            android:layout_alignParentTop="true">
            <ImageView

                android:layout_width="240dp"
                android:layout_height="240dp"
            />
        </RelativeLayout>
        <RelativeLayout

            android:layout_width="wrap_content"
            android:layout_height="130dp"

            android:layout_marginTop="5dp">
            <ImageView

                android:layout_width="30dp"
                android:layout_height="30dp"

                android:visibility="gone"/>
            <ImageView

                android:layout_width="30dp"
                android:layout_height="24dp"


                android:visibility="gone"/>
            <ImageView

                android:layout_width="30dp"
                android:layout_height="24dp"


                android:visibility="gone"/>
            <myClass.MarqueeTextView
                android:id="@+id/marqueetext1"
                android:layout_width="match_parent"
                android:layout_height="30dp"
                android:layout_centerInParent="true"
                android:layout_marginLeft="60dp"
                android:layout_marginRight="60dp"
                android:clickable="true"
                android:ellipsize="marquee"
                android:focusable="true"
                android:marqueeRepeatLimit="0"
                android:scrollHorizontally="true"
                android:singleLine="true"
                android:text="Song Name"
                android:textColor="@android:color/white"
                android:textSize="24dp" />
            <myClass.MarqueeTextView
                android:id="@id/marqueetext2"
                android:layout_width="match_parent"
                android:layout_height="20dp"
                android:layout_below="@+id/marqueetext1"
                android:layout_centerInParent="true"
                android:layout_centerVertical="true"
                android:layout_marginLeft="60dp"
                android:layout_marginRight="60dp"
                android:clickable="true"
                android:ellipsize="marquee"
                android:focusable="true"
                android:marqueeRepeatLimit="0"
                android:scrollHorizontally="true"
                android:singleLine="true"
                android:text="Artist Name"
                android:textColor="@android:color/white"
                android:textSize="18dp" />
            <myClass.MarqueeTextView
                android:id="@id/marqueetext3"
                android:layout_width="150dp"
                android:layout_height="20dp"
                android:layout_alignParentBottom="true"
                android:layout_below="@+id/marqueetext2"
                android:layout_marginLeft="60dp"
                android:layout_marginTop="8dp"
                android:clickable="true"
                android:ellipsize="marquee"
                android:focusable="true"
                android:marqueeRepeatLimit="0"
                android:scrollHorizontally="true"
                android:singleLine="true"
                android:text="Album Name"
                android:textColor="@color/white"
                android:textSize="18dp"/>
            <TextView
                android:id="@+id/tv_playtime"
                android:layout_width="wrap_content"
                android:layout_height="20dp"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/marqueetext2"
                android:layout_marginRight="20dp"
                android:layout_marginTop="8dp"
                android:text="00.00"
                android:textColor="@color/white"
                android:textSize="18dp" />
        </RelativeLayout>
    </RelativeLayout>
    <!--media player tracks-->
    <RelativeLayout

        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="70dip"
        android:visibility="gone">
        <ImageView

            android:layout_width="30dip"
            android:layout_height="30dip"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="14dip"
             />
        <myClass.MarqueeTextView

            android:layout_width="match_parent"
            android:layout_height="30dip"
            android:layout_alignParentBottom="true"
            android:layout_marginLeft="14dip"
            android:layout_marginRight="5dip"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="0"
            android:scrollHorizontally="true"
            android:singleLine="true"
            android:textSize="20sp"
            android:textStyle="bold" />
    </RelativeLayout>
    <!--mood-->
    <myClass.GestureView

        android:layout_width="match_parent"
        android:layout_height="match_parent"
         />
    <!--gestures-->
    <RelativeLayout

        android:layout_width="match_parent"
        android:layout_height="44dp"
        android:layout_alignParentBottom="true"
        >
        <RelativeLayout

            android:layout_width="match_parent"
            android:layout_height="16dp">
        </RelativeLayout>
        <RelativeLayout

            android:layout_width="match_parent"
            android:layout_height="28dp"
            android:layout_alignParentBottom="true"

            >
            <RelativeLayout

                android:layout_width="match_parent"
                android:layout_height="28dp">
                <TextView

                    android:layout_width="wrap_content"
                    android:layout_height="20dp"
                    android:layout_alignParentRight="true"
                    android:layout_marginLeft="50dp"
                    android:layout_marginRight="20dp"
                    android:text="00:00"
                    android:textColor="@android:color/white"
                    android:textSize="18dp"
                    android:visibility="gone" />
                <TextView

                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="7dip"
                    android:text="03:50"
                    android:textColor="@android:color/white"
                    android:textSize="14dp"
                    android:textStyle="bold"
                    android:visibility="gone" />
                <SeekBar

                    style="@style/seekBarMyStyle"
                    android:layout_width="match_parent"
                    android:layout_height="16dp"
                    android:layout_alignParentBottom="true"
                    android:layout_marginLeft="30dp"
                    android:layout_marginRight="30dp"
                    android:maxHeight="2dp"
                    android:minHeight="2dp"
                    android:visibility="visible" />
            </RelativeLayout>
        </RelativeLayout>

    </RelativeLayout>
    <RelativeLayout

        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone">
        <RelativeLayout

            android:layout_width="match_parent"
            android:layout_height="26dip"
            android:layout_alignParentTop="true">
            <TextView

                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:shadowColor="@color/text_shadow_color"
                android:shadowDx="2.5"
                android:shadowDy="2.5"
                android:shadowRadius="0.01"
                android:text="06:18"
                android:textColor="@color/white"
                android:textSize="15sp"
                android:textStyle="bold" />
            <ImageView

                android:layout_width="26dip"
                android:layout_height="match_parent"
                android:layout_centerVertical="true"
                 />
            <ImageView

                android:layout_width="26dip"
                android:layout_height="match_parent"
                android:layout_centerVertical="true"
                android:layout_toLeftOf="@id/iv_mp_battery"

                android:visibility="gone" />
            <ImageView

                android:layout_width="26dip"
                android:layout_height="match_parent"
                android:layout_centerVertical="true"


                android:visibility="gone" />
            <ImageView

                android:layout_width="26dip"
                android:layout_height="match_parent"
                android:layout_centerVertical="true"

                 />
            <ImageView
                android:layout_width="86dip"
                android:layout_height="match_parent"
                android:layout_centerVertical="true"
                android:layout_toLeftOf="@id/iv_mp_signal"
                 />
            <ImageView

                android:layout_width="86dip"
                android:layout_height="match_parent"
                android:layout_centerVertical="true"

                 />
            <ImageView

                android:layout_width="86dip"
                android:layout_height="match_parent"
                android:layout_centerVertical="true"

                />
            <ImageView

                android:layout_width="86dip"
                android:layout_height="match_parent"
                android:layout_centerVertical="true"

                 />
            <ImageView

                android:layout_width="86dip"
                android:layout_height="match_parent"
                android:layout_centerVertical="true"

                />
        </RelativeLayout>

    </RelativeLayout>
   </RelativeLayout>
  <LinearLayout
    android:background="@color/darkbackgroundcoloralpha"

    android:layout_width="match_parent"
    android:layout_height="176dp"
    android:layout_marginTop="50dp"
    android:orientation="vertical"
    android:visibility="gone" />
 </FrameLayout>

我想在这里控制 marqueetext1 的滚动行为,这在歌曲暂停时工作正常(因为定时器文本字段没有更新)。

我尝试过类似的问题,但没有一个能为我工作

注意:我使用手势进行媒体播放器控制(下一步,上一首,播放,暂停)

我的假设是因为布局,因为我已经在自定义Marquee类中完成了调试,其属性不会影响此处的选取框重新启动。我在我的派生Marquee类中重写onFocusChanged,onWindowFocusChanged和isFocused方法,使Textview全部集中。这里缺少什么?

1 个答案:

答案 0 :(得分:1)

我的计时器在字幕文本字段上重叠;所以限制计时器文本视图的宽度解决了这个问题。

<TextView
                android:id="@+id/tv_playtime"
                android:layout_width="50dp"
                android:layout_height="20dp"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/marqueetext2"
                android:layout_marginRight="20dp"
                android:layout_marginTop="8dp"
                android:text="00.00"
                android:textColor="@color/white"
                android:textSize="18dp" />