web-dev-qa-db-ja.com

マルチラインテキストビュー - ベースラインへのアラインメント(ConstraintLayout Android Studio)

私は3つのTextViews "hi""x""Hello World"を持っています。 Hello Worldはわずか1行ですが、layout_widthlayout_heightwrap_contentに設定されています。

私はTextViewsのボックスの下部を簡単に整列させることができますが、テキスト自体が整列されないように、異なるフォントサイズがあります。

TextViewに1行しかない場合は、さまざまなXMLパラメータapp:layout_constraintBaseline_toBaselineOf="@+id/textが見つかりました。しかし、私が2行以上(Hello World Textviewのように)持っている場合、考慮されるベースラインは「世界」ではなく 'hello'にあります。

「こんにちは」の代わりに「世界」という単語の下のベースラインを考慮するための設定を変更する方法はありますか?

enter image description here

15
Tiago Santos

Afaik、今日の制約のようにこのタスクを実行する方法はありません。

「HelloWorldTextView」の内容を事前に知っている場合は、行を複数のTextViewsに分割してからapp:layout_constraintBaselineToBaselineOfを使用したい場合があります。

私はこれがトリッキーな回避策であることを知っていますが、それは頭に浮かぶ唯一の方法です。

2
reavcn

使用ガイドライン

ConstraintLayout用のガイドラインヘルパーオブジェクトを表すユーティリティクラス。ヘルパーオブジェクトはデバイスに表示されません(それらはview.goneとしてマークされています)、レイアウト目的でのみ使用されます。それらは制約の範囲内でのみ機能します。

ガイドラインは水平または垂直方向のいずれかです。

a)垂直ガイドラインにはゼロの幅とそれらの制約範囲親の高さがあります

b)水平方向のガイドラインはゼロの高さとそれらのConstraintLayoutの幅を持っています

ウィジェットは、ガイドラインに制約され、複数のウィジェットを1つのガイドラインから容易に配置することができ、またはパーセントの位置決めを使用することによって無効なレイアウト動作を可能にすることができます。

例 - enter image description here

コード:-

<?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="match_parent">

    <androidx.constraintlayout.widget.Guideline
        Android:id="@+id/guideline"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal"
        app:layout_constraintGuide_percent=".4"
        />

    <TextView
        Android:id="@+id/textViewHi"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        app:layout_constraintLeft_toLeftOf="parent"
        Android:layout_marginLeft="50dp"
        Android:text="hi"
        Android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline" />
    <TextView
        Android:id="@+id/textViewX"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        app:layout_constraintLeft_toLeftOf="@+id/textViewHi"
        Android:layout_marginLeft="50dp"
        Android:text="x"
        Android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline" />

    <TextView
        Android:id="@+id/textViewHelloWorld"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        app:layout_constraintLeft_toLeftOf="@+id/textViewX"
        Android:layout_marginLeft="50dp"
        Android:text="Hello World"
        Android:textSize="45sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline" />

</androidx.constraintlayout.widget.ConstraintLayout>
 _
0
Quick learner