0

내 음악 애플리케이션의 텍스트에 선택 윤곽 동작 (스크롤 없음, 한 번 스크롤, 스크롤 반복)을 결정할 수 있으므로 선택 윤곽 클래스를 자체 구현했습니다. 이 문제는 레이아웃에서 타이머 텍스트 (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의 스크롤 동작을 제어 할 수 있습니다.

나는 비슷한 문제를 시도했지만 그들 중 누구도 주

  • Setting of TextView stops marquee scrolling of other TextView

  • Android, RelativeLayout restarts Marquee-TextView when changing ImageView in same RelativeLayout

  • 나를 위해

    • TextView restarts Marquee when changing another TextView in same LinearLayout

    • 작동하지 않습니다 : gestu를 사용하고 미디어 플레이어 컨트롤 (다음, 이전, 재생, 일시 중지)에 대한 res

      내 가정은 마티 재시작에 영향을 미치지 않는 사용자 지정 마키 클래스에서 디버깅을 통해 수행 했으므로 레이아웃 때문에 발생합니다. onFindChanged, onWindowFocusChanged 및 isFocused 메서드를 파생 클래스에서 재정의하여 Textview를 모두 집중 시켰습니다. 여기에 누락 된 부분이 있습니까?

    답변

    0

    내 타이머는 선택 윤곽 텍스트 필드에서 겹쳐져 있습니다. 그래서 타이머 텍스트보기의 너비를 제한하여 문제를 해결했습니다.

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