亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

TextSwitcher 的自動調整大小 TextView

TextSwitcher 的自動調整大小 TextView

慕村225694 2022-07-06 18:19:40
我看到 Android 發布了Oreo一個新屬性textView:android:autoSizeTextType這會textView根據它顯示的文本字符串調整布局。我怎樣才能將它與 a 一起使用textSwitcher?
查看完整描述

3 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

我不知道上面的那些,但這是一個編碼最少的解決方案。您可以更改主布局高度以查看自動調整大小,或者您可以點擊上部切換器。一個很酷的功能是第二個文本字段的樣式在點擊時會延續(即文本是白色的)。


class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main)

    }


    fun switchText(v: View) {

        (v as? TextSwitcher)?.let{

            it.tag = (((it.tag as? Int) ?: 0) + 1) % it.childCount

            it.setText((it.children.toList()[it.tag as Int] as TextView).text)

        }

    }

}

activity_main.xml


<?xml version="1.0" encoding="utf-8"?>

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="350dp"

    tools:context=".MainActivity">


    <TextSwitcher

        android:id="@+id/a"

        android:layout_width="0dp"

        android:layout_height="0dp"

        android:background="@color/purple_200"

        app:layout_constraintBottom_toTopOf="@id/b"

        app:layout_constraintStart_toStartOf="parent"

        app:layout_constraintEnd_toEndOf="parent"

        app:layout_constraintTop_toTopOf="parent"

        app:layout_constraintVertical_chainStyle="spread"

        android:onClick="switchText"

        android:layout_marginTop="5dp"

        android:layout_marginBottom="5dp">

        <TextView

            android:id="@+id/a1"

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:text="999 / 999"

            android:gravity="center"

            android:letterSpacing="-0.05"

            app:autoSizeMaxTextSize="936sp"

            app:autoSizeMinTextSize="28sp"

            app:autoSizeTextType="uniform"

            android:lines="1"

            android:includeFontPadding="false" />

        <TextView

            android:id="@+id/a2"

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:text="1000000 / 10000000"

            android:textColor="@color/white"

            android:gravity="center"

            android:letterSpacing="-0.05"

            app:autoSizeMaxTextSize="136sp"

            app:autoSizeMinTextSize="28sp"

            app:autoSizeTextType="uniform"

            android:lines="1"

            android:includeFontPadding="false" />

    </TextSwitcher>

    <TextSwitcher

        android:id="@+id/b"

        android:layout_width="0dp"

        android:layout_height="0dp"

        android:background="@color/teal_200"

        app:layout_constraintBottom_toBottomOf="parent"

        app:layout_constraintStart_toStartOf="parent"

        app:layout_constraintTop_toBottomOf="@+id/a"

        app:layout_constraintEnd_toEndOf="parent"

        app:layout_constraintVertical_chainStyle="spread"

        android:layout_marginTop="5dp"

        android:layout_marginBottom="5dp">

        <TextView

            android:id="@+id/b1"

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:text="999 / 999"

            android:gravity="center"

            android:letterSpacing="-0.05"

            app:autoSizeMaxTextSize="136sp"

            app:autoSizeMinTextSize="28sp"

            app:autoSizeTextType="uniform"

            android:lines="1"

            android:includeFontPadding="false" />


    </TextSwitcher>


</androidx.constraintlayout.widget.ConstraintLayout>



查看完整回答
反對 回復 2022-07-06
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

 <?xml version="1.0" encoding="utf-8"?>

 <TextView

   xmlns:android="http://schemas.android.com/apk/res/android"

   android:id="@+id/textView"

   android:layout_width="wrap_content"

   android:layout_height="wrap_content"

   android:text="@string/hello" />


 private ViewFactory viewFactory = new ViewFactory() {

    public View makeView()  {

        LayoutInflater inflater = LayoutInflater.from(TextSwitcherTest.this);

        TextView textView = (TextView) inflater.inflate(R.layout.textView, null);

        return textView;

    }

};


查看完整回答
反對 回復 2022-07-06
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

  altitudeSwitcher = (TextSwitcher) findViewById(R.id.altitude);

    altitudeSwitcher.setFactory(new ViewFactory() {


        @Override

        public View makeView() {



            TextView t = new TextView(getApplicationContext());

            t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);

            t.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 50);


            return t;

        }

    });


查看完整回答
反對 回復 2022-07-06
  • 3 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號