2017-12-14 26 views
1

私は週の7つのボックスが必要なAndroid UIを構築しようとしています。これを行うために、どの画面でもビューのサイズを自動的に変更できるように、ConstraintLayoutを使用することにしました。ConstraintLayout重み付きビュー間の間隔?

「spread_inside」属性を使用して7つのビューの間にチェーンを作成しましたが、ビューの幅がwrap_contentに設定されていたため、TextViewsの性質上、ビューの幅は等しくなりませんでした。だから私は7つのビューの幅のすべてを0dpに設定して、それらの幅を同じにしてみました。これは機能しますが、ビュー間にスペースはありません。これらの7つのビューの間にスペースを追加する方法はありますか?または、任意の画面で自動サイズ変更機能を維持しながら、7つのビューすべてに対して「等幅」を達成する別の方法がありますか?これはConstraintLayoutでも可能ですか?このようなことにLinearLayoutを使用し続ける必要がありますか? (最後のスクリーンショットで見たように)

画面が小さくてもビューが縮小され、画面が大きくなるとレベルに拡大されます。今見ているスクリーンショットをご覧ください。私は(最後のスクリーンショットのように、8DP幅のレイアウト上に透明デバイダを追加することで、私はこれを達成するためのLinearLayoutに)各ビュー間8DPパディングを追加したい

On a large screen

On a small screen

On a very large screen

How it should look, achieved using LinearLayout

は、それがどのように見えるべきか、のLinearLayout

使用して達成しました

答えて

1

あなたがそれらの幅をすべて同じ幅にしたい場合は、spread_insideの幅を0dpに設定してから、ビューに余白を追加するだけです。例えば:

<?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" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <View 
     android:id="@+id/view1" 
     android:layout_width="0dp" 
     android:layout_height="50dp" 
     android:layout_marginRight="4dp" 
     android:layout_marginLeft="8dp" 
     android:background="#ffff0000" 
     app:layout_constraintEnd_toStartOf="@+id/view2" 
     app:layout_constraintStart_toStartOf="parent"/> 

    <View 
     android:id="@+id/view2" 
     android:layout_width="0dp" 
     android:layout_height="50dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginLeft="4dp" 
     android:background="#ff00ff00" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toEndOf="@+id/view1"/> 

</android.support.constraint.ConstraintLayout> 

は、ビューの間のスペースは、最初と最後のビューは1つだけ余裕スペースを持つことになり、2つのマージンの合計になりますので、あなたは、ビュー間のマージンのため4DPのように(それに応じて設定する必要があることを念頭に置いておきます最初と最後の余白は8dp)

+0

ありがとう!私は午前中にそれを試し、あなたに知らせるでしょう。 –

+0

LinearLayoutと仕切りは、7つのビューの左右の(および開始と終了)マージンではなく、1つのディバイダ描画可能なものを管理する方が簡単だからと考えています。あなたのお返事ありがとうございます! –