2026/02/12

오늘의 이야기

자료출처 : dev.re.kr/2



 


[Tip] 항상 흐르는 텍스트 뷰 만들기 (무한 marquee)


안드로이드에서 흐르는 텍스트를 만드는 방법은 무척 간단하다. Layout 리소스 XML 의 TextView (또는 TextView 가 들어간 위젯) 속성에 다음과 같이 세 줄만 추가해 주면 된다. android:ellipsize="marquee" a..


dev.re.kr




앱을 만들다 보니... 화면의 크기는 한계가 있고 나타날 글짜는 많고...


그래서 또 구글링~~~  그러다가 찾은 것이 위에 있는 링크에서 도움을 받았다.


저 링크에 있는 소스 예제는 android 빌드 버전에 예전꺼 일 때 만든 것 같고...


build 버전 28.0.0 이후 부터는 androidx 로 이전을 해야 하는데, 조금의 설정 수정이 필요해서 수정했다.


androidx.appcompat.widget.AppCompatTextView만 수정한 것 같은 생각이... ㅋㅋㅋ



import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;

public class MarqueeTextView extends androidx.appcompat.widget.AppCompatTextView {

String TAG = "MarqueeTextView" ;

public MarqueeTextView(Context context) {
super(context);
}

public MarqueeTextView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
}

@Override
protected void onFocusChanged(boolean focused, int direction, Rect
previouslyFocusedRect) {

//Log.d(TAG, "getMarqueeRepeatLimit onFocusChanged(" + this.getMarqueeRepeatLimit() + ")") ;

if(focused)
super.onFocusChanged(focused, direction, previouslyFocusedRect);

}

@Override
public void onWindowFocusChanged(boolean focused) {

//Log.d(TAG, "getMarqueeRepeatLimit onWindowFocusChanged (" + this.getMarqueeRepeatLimit() + ")") ;

if(focused)
super.onWindowFocusChanged(focused);
}

@Override
public boolean isFocused() {
return true;
}
}

 


위와 같이 수정하고 나서, layout 에서는 


<MarqueeTextView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:ellipsize="marquee"
android:fontFamily="@font/noto_sans_bold"
android:gravity="center_horizontal|center_vertical"
android:includeFontPadding="false"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:textSize="12sp" />

와 같이 TextView 을 추가하고 그 안에 값을 넣어주면 흐르는 글씨를 만들 수 있다.


기본 제공되는 TextView 에서도


 


android:ellipsize="marquee"


android:marqueeRepeatLimit="marquee_forever"


 


위 2개 항목을 넣어주면 같은 처리가 되기는 하지만, 해당 TextView 에 포커스가 가 있는 경우만 글자가 흐르기 때문에


위에서 보여준 것 처럼 나만의 TextView 로 수정을 해서 사용하게 되면 항상 흐르는 글짜를 볼 수 있다.


 


다만, ListView 에 넣어 사용하게 되는 경우는 좀 헛짓를 하는 경우가 있기는 했다.


 





댓글 없음:

댓글 쓰기

오늘의 이야기

이 앱은  작은 정비업소등에서 사용할 수 있도록 개발된 앱입니다.   1. 이앱은 5가지 정도의 공정을 가지고 있는 정비업소에서 각 공정별로 입고되는 수리대상 품목(이하 수리차량이라 명칭)을 입고, 도장, 하부, 판금, 점검 등의 구분에 따라 관리할 ...