2017-07-10 15 views
5

Tôi có một bố cục trông như thế này:Làm cách nào để đặt chiều rộng tối đa cho chế độ xem trong android constraintLayout?

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayoutxmlns: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" /> 

Và tôi muốn thay đổi nó để giá trị mặc định seekBar để có chiều rộng nhất định, nhưng nếu màn hình không phải là đủ rộng, nó chỉ lấp đầy màn hình (với lề). Tôi đã thử thiết lập layout_width, nhưng sau đó nó chỉ tắt màn hình nếu quá rộng. Sử dụng max_width không làm gì cả. Là những gì tôi muốn có thể trong một ConstrainstLayout? Nếu không thì tôi nên sử dụng cái gì?

+0

Bạn nên sử dụng bố trí khác nhau cho độ phân giải màn hình khác nhau. –

Trả lời

19

Tôi nghĩ rằng những gì bạn đang tìm kiếm là thuộc tính matchConstraintMaxWidth.

Nếu bạn thêm nó vào SeekBar với giá trị là 200dp, giữ giới hạn trái và phải cho phụ huynh và chiều rộng 0dp, nó sẽ kéo rộng chiều rộng của khung lên đến 200dp, nhưng nếu có nhiều chỗ hơn nó sẽ ở mức 200dp.

để xml của bạn sẽ trông như thế này:

<SeekBar 
    ... 
    android:layout_width="0dp" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintWidth_max="200dp" /> 

bạn cũng sẽ có thể thiết lập nó lập trình với

ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(0, 0); 
layoutParams.matchConstraintMaxWidth = ... 
+0

vì vậy đó là một trường trong lớp ConstraintLayout.LayoutParams? nó có phải được đặt vào thời gian chạy không? – pjc

+0

đúng, nó là một lĩnh vực của ConstraintLayout.LayoutParams, tôi tưởng tượng nó có thể được thiết lập thông qua Java quá – lelloman

+0

Tôi nghĩ đó là một bình luận xấu, vì nó là cần thiết cho tất cả các màn hình để thay đổi giá trị – Morozov

Các vấn đề liên quan