3

JavaのConstraintLayoutにいくつかのビューを追加したいとします。これはレイアウトxmlです:ConstraintLayout内のビューに制約を追加すると左右の余白が無視される

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/constraint_layout" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
</android.support.constraint.ConstraintLayout> 

、これは活動のコードです:

public class MainActivity extends AppCompatActivity { 

    private ConstraintLayout layout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     layout = (ConstraintLayout) findViewById(R.id.constraint_layout); 
     TextView textView = new TextView(this); 
     textView.setId(View.generateViewId()); 
     textView.setBackgroundColor(Color.RED); 
     textView.setText("ciao"); 
     layout.addView(textView); 

     ConstraintSet constraints = new ConstraintSet(); 
     constraints.clone(layout); 
     constraints.constrainWidth(textView.getId(), ConstraintSet.MATCH_CONSTRAINT); 
     constraints.constrainHeight(textView.getId(), ConstraintSet.MATCH_CONSTRAINT); 
     constraints.setDimensionRatio(textView.getId(), "h,1:1"); 
     constraints.connect(textView.getId(), ConstraintSet.LEFT, ConstraintSet.PARENT_ID, ConstraintSet.LEFT, 8); 
     constraints.connect(textView.getId(), ConstraintSet.RIGHT, ConstraintSet.PARENT_ID, ConstraintSet.RIGHT, 8); 
     constraints.connect(textView.getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP, 8); 
     constraints.applyTo(layout); 
    } 
} 

左右の制約マージンは単に無視されている(通話を接続参照します)。私はsdkのバージョン25を使用しています。 これはバグですか?または私は何か間違っている? The TextView without left and right margin

+0

これは良い方法です。 'ConstraintSet#connect'は左右のマージンを尊重していないようです。しかし、上下のマージンは尊重されます。 XMLで定義されているとすべてが正常に見えます。私は "バグ"に投票するだろう。あなたは回避策としてガイドラインを使用できるかもしれません。 – Cheticamp

答えて

3

指定したとおりに左右の余白を設定することは間違いなく機能するはずです。なぜそれが私にとって謎ではないのか。回避策として、次のようにTextViewに明示的に余白を設定することができます。

+0

私はそれがバグだとも思います。今のところあなたの回避策を使用します。ありがとうございます。 –

+0

問題追跡ツールで問題を提出しました:https://issuetracker.google.com/issues/62154545 – Cheticamp

関連する問題