일반적으로 TextView에 marguee 를 걸러줄려면 java 소스상에서 textView.setSelected(true);를 설정해야 정상 동작하나, RemoteView에서는 이렇게 할 수 없습니다.

하지만,

아래와 같이 xml상에서 <requestFocus/> 를 태그안에 넣어주면 똑같이 동작을 합니다. 이때 android:focusableInTouchMode="true" 를 같이 넣어줘야합니다.

<TextView android:id="@+id/current_condition"
android:layout_width="100dip" 
android:layout_height="wrap_content"
android:textSize="17sp"  
android:text="so lon~~~~~~g texxt"
android:focusable="true" 
android:singleLine="true"
android:ellipsize="marquee" 
android:focusableInTouchMode="true" 
   android:marqueeRepeatLimit="marquee_forever"> 
<requestFocus/> 
</TextView>

한가지 문제접이 있습니다. 위젯이 포커스를 받았을때만 marquee가 적용됩니다. 다른 홈으로 갔다 돌아오면 글자가 흘러가지 않습니다.

지우사랑님의 해결책으로하면 이 문제도 없을 것이라고 생각합니다. 단, 원래 TextView를 고쳐야하지만...
자문자답의 일인자... ㅡ.ㅡ;;;
고민고민하다가 TextView를 고쳐버렸습니다. 에고고...
어짜피 폰제조사에서 올리는 것이라서 문제는 없었습니다.
TextView.java 소스를 보면  isFocused, isSelected 로 Marquee를 작동시킬지 여부를 체크하는데, 이 두가지 요소를 제어할 수가 없어서 안되는 것이였습니다. 따라서 여기에 isMarqueeAlwaysEnable Method와 setMarqueeAlwaysEnable( boolean) Method를 추가해서 Marquee를 작동할 수 있게끔 처리하여 문제를 해결했습니다. 
setMarqueeAlwaysEnable( boolean) Method 위에 @android.view.RemotableViewMethod 를 해줘야 RemoteViews에서 사용가능합니다.
자세한 소스는 알려드리지 못하는 것은 폰제조사 보안 문제 땜시롱 조심조심 하느라... 대충 이정도면 다른 분들도 이해 하셨으리라 생각됩니다...
Posted by Tom. Trackback 0 : Comment 1
prev 1 ... 13 14 15 16 17 18 19 20 21 ... 22 next