0
votes

Taille automatique TextView pour TextSwitcher

Je vois que Android publié dans Oreo Un nouvel attribut pour TextView : xxx

Ceci adapte la disposition du TextView en fonction de la chaîne de texte qu'il affiche.

Comment puis-je utiliser ceci avec un textswitcher ?


0 commentaires

3 Réponses :


-1
votes
    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;
        }
    });

4 commentaires

Je ne comprends pas comment ce TextView va s'adapter au texte à l'intérieur?


@Isaac à Android, Textswitcher est une vue spécialisée qui contient uniquement des enfants de type TextView. - La méthode SetFactory est utilisée pour créer une nouvelle vue pour TextSwitcher. En utilisant cette méthode, nous créons une nouvelle TextView et remplacons l'ancienne vue avec cela.


Il est probablement plus facile de gonfler une vue textuelle que de le créer en code, mais je reçois l'idée.


@Isaac Oui, vous pouvez consulter la nouvelle réponse pour cela



-1
votes
 <?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;
    }
};

0 commentaires

0
votes

Je ne sais pas sur ceux ci-dessus, mais voici une solution avec un codage minimal. Vous pouvez modifier la hauteur principale de la mise en page pour voir l'autostimation en action, ou vous pouvez appuyer sur la section supérieure. Une caractéristique froide est que le style du deuxième champ de texte effectue une fois taraudé (c'est-à-dire que le texte est blanc).

<?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>


0 commentaires