android TextViewが走馬灯効果を実現
本論文の例では、Android TextViewの走馬灯効果の具体的なコードを共有します。参考にしてください。具体的な内容は以下の通りです。
一、ポイント
四つの属性を設定します
android:single Line=「true」
android:ellipsize="marquee"
android:focusable=「true」
android:focusable Intouch Mode="true"
直接xmlに使用する
二、複雑なレイアウト
複雑なレイアウトでは、走馬灯効果は実現しないかもしれません。例えば次のようなレイアウトでは、最初のTextViewだけが走馬灯効果があります。
カスタムMaQueeText View TextView isFocusedを書き換えて、trueに戻ります。
一、ポイント
四つの属性を設定します
android:single Line=「true」
android:ellipsize="marquee"
android:focusable=「true」
android:focusable Intouch Mode="true"
直接xmlに使用する
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:text=" 、 、 , , 。" />
注意:single Line属性はmaxl Linessに変えられません。 二、複雑なレイアウト
複雑なレイアウトでは、走馬灯効果は実現しないかもしれません。例えば次のようなレイアウトでは、最初のTextViewだけが走馬灯効果があります。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv1"
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:text=" 、 、 , , 。" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv1"
android:layout_marginTop="10dp"
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:text=" 、 、 , , 。" />
</RelativeLayout>
この時はViewをカスタマイズして走馬灯の効果を実現します。カスタムMaQueeText View TextView isFocusedを書き換えて、trueに戻ります。
public class MarqueeText extends TextView {
public MarqueeText(Context context) {
super(context);
}
public MarqueeText(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public MarqueeText(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean isFocused() {
return true;
}
}
レイアウトで使用
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.example.dhj.marqueedemo.View.MarqueeText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv1"
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:text=" 、 、 , , 。" />
<com.example.dhj.marqueedemo.View.MarqueeText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv1"
android:layout_marginTop="10dp"
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:text=" 、 、 , , 。" />
</RelativeLayout>
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。