[JAVA] [Mémorandum du débutant] Histoire lors de la rotation de TextView et Button avec du texte

Lorsque vous souhaitez dessiner du texte pivoté de 90 degrés verticalement, vous devez penser à l'écrire en utilisant la rotation pour le moment.

rotation_bad.xml


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/sampleTextView"
    android:text="@string/sampleText"
    android:rotation="90"
    android:gravity="center" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/sampleButton"
    android:text="@string/sampleText"
    android:rotation="90"
    android:gravity="center" />

Dès que je l'exécute, je le sais, mais cela ne fonctionne pas comme prévu. Après avoir défini la taille de la vue avec layout_width et layout_height, la rotation n'est effectuée que sur le texte sous-jacent. Il y avait quelque chose comme hériter de la classe pour l'écriture verticale et la recréer, mais pour le moment, c'est l'une des solutions simples.

Vous pouvez utiliser ConstraintLayout pour amener le TextView à une bonne position.

rotation_good.xml


<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Space
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/textSpace" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        app:layout_constraintDimensionRatio="1:1"
        android:id="@+id/sampleTextView"
        android:text="@string/sampleText"
        android:rotation="90"
        android:gravity="center"
        app:layout_constraintTop_toTopOf="@+id/textSpace"
        app:layout_constraintBottom_toBottomOf="@+id/textSpace"
        app:layout_constraintStart_toStartOf="@+id/textSpace"
        app:layout_constraintEnd_toEndOf="@+id/textSpace"
        android:translationZ="10dp" />

</android.support.constraint.ConstraintLayout>

Après avoir sécurisé uniquement l'espace dans la vue placé en dessous, ignorez-le et couvrez-le avec un nouveau TextView d'en haut. Le fait est que s'il s'agit d'une vue carrée, il n'y a pas de problème même si elle est tournée, et si elle est centrée, cela fonctionnera. Il est possible de décaler la position du TextView qui couvre l'alignement gauche et droit, et la même chose peut être faite avec le bouton si la partie Espace est un bouton. La raison pour laquelle translationZ est défini sur une valeur positive est que, selon le type de vue placé en dessous, le TextView sera couvert et le texte ne sera pas affiché.

Il serait plus facile de créer une classe et d'implémenter un TextView rotatif, alors réfléchissons-y quand nous en avons le temps.

Recommended Posts

[Mémorandum du débutant] Histoire lors de la rotation de TextView et Button avec du texte
Changer la disposition lors de la rotation avec onConfigurationChanged