반응형
Android 자동 가로 스크롤 TextView
자동으로 스크롤되는 한 줄 텍스트보기를 구현하려고합니다. 그러나 불행히도 그것을 작동시킬 수 없습니다. AutoScrollTextView는 LinearLayout (너비 및 높이 = fill_parent) 내에서 선언됩니다. 이 클래스는 기본적으로 자신을 호출하여 주어진 양만큼 스크롤하는 Handler를 사용합니다. 매초 5 픽셀 씩 스크롤해야하는 텍스트보기 만 표시하도록 코드를 단순화했습니다.
로그 출력이 정확하고 getScrollX () 메서드는 적절한 scrollX 위치를 반환합니다.
을 호출하지 않으면 requestLayout()
아무것도 그려 지지 않습니다 . invalidate()
효과가 없습니다.
아무도 단서가 있습니까?
public class AutoScrollTextView extends TextView {
public AutoScrollTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setSingleLine();
setEllipsize(null);
setText("Single-line text view that scrolls automatically if the text is too long to fit in the widget");
}
// begin to scroll the text from the original position
public void startScrolling() {
scrollHandler.sendEmptyMessage(0);
}
private Handler scrollHandler = new Handler() {
private static final int REFRESH_INTERVAL = 1000;
public void handleMessage(Message msg) {
scrollBy(5, 0);
requestLayout();
Log.debug("Scrolled to " + getScrollX() + " px");
sendEmptyMessageDelayed(0, REFRESH_INTERVAL);
}
};
}
을 하위 클래스로 만들 필요가없는 경우 TextView
레이아웃 파일에서 다음을 시도 할 수 있습니다.
<TextView
android:text="Single-line text view that scrolls automatically if the text is too long to fit in the widget"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit ="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
또한 코드에서 다음을 사용하십시오.
findViewById(R.id.serviceColorCode).setSelected(true);
[댓글에 따라 수정 된 답변]
@rajat가 답변 한 XML 코드 이후
<TextView
android:text="Single-line text view that scrolls automatically if the text is too long to fit in the widget"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit ="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
우리는 설정해야
TextView tv=(TextView)findViewById(R.id.textview1);
tv.setSelected(true);
마침내 내 일을 만들었습니다.
내 솔루션이 작동합니다.
<TextView
android:id="@+id/titolotxt"
android:layout_width="..."
android:layout_height="..."
android:ellipsize="marquee"
android:gravity="left"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:text="@string/titolo"/>
그리고는 TextView
: 선택 살고 있고해야하는 textView.setSelected(true);
코드의 onCreate
예를 들어.
// this TextView will marquee because it is selected
TextView marqueeText1 = (TextView) findViewById(R.id.marquee_text_1);
marqueeText1.setSelected(true);
<TextView
android:id="@+id/marquee_text_1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."
android:textSize="24sp"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true" />
다음과 같이 주 스레드에서 invalidate를 호출 할 때까지 invalidate가 작동하지 않는 경우가 있습니다.
handler.post(new Runnable() {
@Override
public void run() {
yourView.invalidate();
}
});
참조 URL : https://stackoverflow.com/questions/5472362/android-automatic-horizontally-scrolling-textview
반응형
'development' 카테고리의 다른 글
PKCS12 내보내기 중에 OpenSSL이 " '화면'을 임의 상태로로드 중"과 함께 중단됨 (0) | 2020.12.31 |
---|---|
APK 생성시 네이티브 Android 중복 파일 오류에 대응 (0) | 2020.12.31 |
모델을 만들려고 할 때 'rails generate'명령이 중단됨 (0) | 2020.12.31 |
Git 현재 분기 및 색상이있는 PS1 라인 (0) | 2020.12.31 |
"잘못된 토큰"오류를 제공하는 Asp.NET Identity 2 (0) | 2020.12.31 |