次のようなレイアウトがあります。
<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.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"
tools:context="com.plarke.proto1.QuizActivity">
<Button
Android:id="@+id/compare_settings"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Button"
app:layout_constraintTop_toTopOf="parent"
Android:layout_marginTop="16dp"
Android:layout_marginRight="16dp"
app:layout_constraintRight_toRightOf="parent"
Android:layout_marginEnd="16dp" />
<TextView
Android:id="@+id/compare_score"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="TextView"
app:layout_constraintTop_toTopOf="parent"
Android:layout_marginTop="16dp"
Android:layout_marginLeft="16dp"
app:layout_constraintLeft_toLeftOf="parent"
Android:layout_marginStart="16dp" />
<SeekBar
Android:id="@+id/compare_pitchbar"
Android:layout_width="0dp"
Android:layout_height="23dp"
Android:layout_marginBottom="50dp"
Android:layout_marginEnd="16dp"
Android:layout_marginLeft="16dp"
Android:layout_marginRight="16dp"
Android:layout_marginStart="16dp"
Android:progressBackgroundTint="@color/colorAccent"
Android:progressBackgroundTintMode="src_over"
app:layout_constraintBottom_toTopOf="@+id/textView"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<Button
Android:id="@+id/button2"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_marginBottom="16dp"
Android:layout_marginLeft="16dp"
Android:layout_marginRight="16dp"
Android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
Android:layout_marginStart="16dp"
Android:layout_marginEnd="16dp" />
<TextView
Android:id="@+id/textView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginBottom="50dp"
app:layout_constraintBottom_toTopOf="@+id/button2"
tools:text="The seekbar is all the way to the left."
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
Android:layout_marginRight="0dp"
Android:layout_marginLeft="0dp" />
そして、seekBarのデフォルトが特定の幅になるように変更したいのですが、画面が十分に広くない場合は、画面を(マージンで)埋めるだけです。 layout_widthを設定してみましたが、幅が広すぎると画面から消えてしまいます。 max_widthを使用しても何も起こりません。 ConstrainstLayoutで可能なことはありますか?そうでない場合、何を使用すればよいですか?
私が探しているのは matchConstraintMaxWidth 属性だと思います。
これをSeekBar
に追加し、たとえば200dp
の値を使用して、親に対する左右の制約と0dp
の幅を維持すると、ビューの幅が拡大されます200dpまでですが、部屋がもっとある場合は200dpのままです。
したがって、xmlは次のようになります。
<SeekBar
...
Android:layout_width="0dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintWidth_max="200dp" />
あなたはそれをプログラムで設定することもできるはずです
ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(0, 0);
layoutParams.matchConstraintMaxWidth = ...
ビューに水平方向の制約が1つしかない場合は、この行を追加する必要があることに注意してくださいapp:layout_constraintWidth_default="percent
<SeekBar
...
Android:layout_width="0dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_max="200dp" />