J'ai une mise en page qui ressemble à ceci:
<?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" />
Et je veux le changer pour que la barre de recherche par défaut ait une certaine largeur, mais si l'écran n'est pas assez large, il remplit simplement l'écran (avec des marges). J'ai essayé de définir layout_width, mais il disparaît simplement de l'écran s'il est trop large. L'utilisation de max_width ne fait rien du tout. Ce que je veux est-il possible dans un ConstrainstLayout? Sinon, que dois-je utiliser?
Je pense que ce que vous recherchez est matchConstraintMaxWidth attribut.
Si vous l'ajoutez à votre SeekBar
avec une valeur de, disons, 200dp
, en conservant les contraintes gauche et droite au parent et une largeur de 0dp
, il étendra la largeur de la vue jusqu'à 200dp, mais s'il y a plus d'espace, il restera à 200dp.
donc votre xml devrait ressembler à ceci:
<SeekBar
...
Android:layout_width="0dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintWidth_max="200dp" />
vous devriez également pouvoir le définir par programme avec
ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(0, 0);
layoutParams.matchConstraintMaxWidth = ...
Notez que si votre vue n'a qu'une seule contrainte horizontale, vous devez ajouter cette ligne 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" />