marquee는 selected 또는 focused 되었을때 동작
<TextView
android:id="@+id/longtextname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:singleLine="true"
android:gravity="center" />
TextView tv = (TextView)findViewById(R.id.longtextname);
tv.setText(str);
tv.setHorizontallyScrolling(true);
tv.setEllipsize(TruncateAt.MARQUEE);
tv.setSelected(true);
tv.setSingleLine(true);
tv.setMarqueeRepeatLimit(-1);
GridView or ListView
GridView 또는 ListView의 경우 첫 화면에 보이지 않던 아이템이 scroll 후 표시될 때 marquee가 동작하지 않는 문제가 있다.
예를 들어 Column 4의 Gridview에 12개의 아이템이 있다면
처음 1~4개의 아이템은 정상적으로 marquee가 동작하지만
스크롤 하여 5~8 아이템을 보면 marquee가 동작하지 않는다.
하지만 9~12 아이템은 또 정상적으로 marquee가 동작한다.ㅡㅡㅋ
다시 스크롤을 올려 5~8 아이템을 보면 marquee가 동작한다.
왜 그런지는 나도 모른다.
다만 Marquee의 동작 조건이 focus 또는 selected인데
View가 visibile 상태가 아니면 selected나 focus 처리를 하더라도 abort 된 것으로 보인다.
그래서 생각한 해결책이 delay를 주어 selected 처리를 하는 것이었고
정상적으로 모든 아이템이 marquee 된다.
private static class ViewHolder {
ImageView mIcon;
TextView mTitle;
TextView mSubtitle;
}
private class MyListAdapter extends BaseAdapter {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = mLayoutInflater.inflate(R.layout.my_list_layout_item, null);
startMarquee(view);
return view;
}
}
public class MyAdapter extends CursorAdapter{
@Override
public void bindView(View view, Context context, Cursor cursor) {
startMarquee(view);
}
}
public void startMarquee(final View v){
if(v == null){
return;
}
v.postDelayed(new Runnable(){
@Override
public void run() {
Object obj = v.getTag();
if(obj != null && obj instanceof ViewHolder){
final ViewHolder holder = (ViewHolder) obj;
holder.mTitle.setHorizontallyScrolling(true);
holder.mTitle.setEllipsize(TruncateAt.MARQUEE);
holder.mTitle.setSelected(true);
holder.mTitle.setSingleLine(true);
holder.mTitle.setMarqueeRepeatLimit(-1);
}
}
}, 300);
}
'programmer > android' 카테고리의 다른 글
Content Uri and File path (0) | 2013.07.25 |
---|---|
Screen rotation (0) | 2013.07.24 |
view dimension(width/height) check before view is displayed (0) | 2013.07.18 |
custom spinner (0) | 2013.07.18 |
content observer (0) | 2013.07.17 |