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