2017-12-27 125 views
0

我正在Android中開發應用程序,現在我遇到按鈕對齊的問題。我需要動態設置約束(我有3箱子按鈕排列的),我有一個ConstraintLayout:以編程方式更改按鈕約束設置並填充空間

<android.support.constraint.ConstraintLayout 
    android:id="@+id/bottomLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/border" 
    android:padding="3dp" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/middleLayoutText" 
    app:layout_constraintVertical_chainStyle="packed" > 

    <Button 
     android:id="@+id/firstButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:id="@+id/secondButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</android.support.constraint.ConstraintLayout> 

正如你可以看到它包含兩個按鈕,現在編程我需要設置自己的定位,例如在一個第一個在第二個旁邊。我使用此代碼做:

ConstraintLayout layout = (ConstraintLayout) constraintLayout.findViewById(R.id.bottomLayout); 
ConstraintSet set = new ConstraintSet(); 
set.clone(layout); 

Button firstButton = (Button) layout.findViewById(R.id.firstButton); 
firstButton.setText(buttonsOption.getFirstButton().getContent().getText()); 

Button secondButton = (Button) layout.findViewById(R.id.secondButton); 
secondButton.setText(buttonsOption.getSecondButton().getContent().getText()); 

set.connect(firstButton.getId(), ConstraintSet.LEFT, ConstraintSet.PARENT_ID, ConstraintSet.LEFT); 
set.connect(firstButton.getId(), ConstraintSet.RIGHT, secondButton.getId(), ConstraintSet.LEFT); 
set.connect(secondButton.getId(), ConstraintSet.START, firstButton.getId(), ConstraintSet.END); 
set.connect(secondButton.getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END); 
set.setHorizontalChainStyle(firstButton.getId(),ConstraintSet.CHAIN_PACKED); 
set.setHorizontalChainStyle(secondButton.getId(),ConstraintSet.CHAIN_PACKED); 
set.applyTo(layout); 

現在看起來是這樣的:image,但我想做到這一點的第一個調整他的寬度,以填補在左邊,第二個空間的右側部分。我試過layout_width的組合,設置每個連接等,但仍然沒有成功。

在此先感謝您的幫助。

回答

0

您是否嘗試過使用

set.constrainWidth(firstButton.getId(), ConstraintSet.MATCH_CONSTRAINT); 
set.constrainWidth(secondButton.getId(), ConstraintSet.MATCH_CONSTRAINT); 

您也應該檢查約束集文檔here

+0

謝謝!我已經讀過它,但我忘了檢查它...它很好:D –

相關問題