2017-05-21 27 views
0

我想在LinearLayout中每行對齊一個CheckBox元素。 我在LinearLayout對象中動態添加CheckBox元素。Android LinearLayout每行一個元素

我試着設置CheckBox與setLines(1),setWidth(400)

public class QuizQuestionActivity extends AppCompatActivity { 

    TextView questionText; 
    LinearLayout answerLinearLayout; 
    ArrayList<CheckBox> answers; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_quiz_question); 
     setTitleQuestion("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pellentesque pulvinar rutrum."); 

     answerLinearLayout = (LinearLayout) findViewById(R.id.answerLinearLayout); 
     displayAnswers(); 
    } 

    private void setTitleQuestion(String titleQuestion) { 
     setContentView(R.layout.activity_quiz_question); 
     questionText = (TextView) findViewById(R.id.titleQuestionText); 
     questionText.setText(titleQuestion); 
    } 

    private void displayAnswers() { 
     createAnswers(); 
     for (CheckBox answer: answers) { 
      answerLinearLayout.addView(answer); 
     } 
    } 

    private void createAnswers() { 
     answers = new ArrayList<>(); 
     for (int i = 0; i < 10; i++) { 
      String content = "Réponse : "+i; 
      CheckBox checkbox = createAnswer(content); 
      System.out.println(checkbox); 

      answers.add(checkbox); 
     } 
    } 

    private CheckBox createAnswer(String text) { 
     CheckBox answer = new CheckBox(this); 

     answer.setLines(1); 
     answer.setWidth(400); 
     answer.setText(text); 
     answer.setClickable(true); 

     return answer; 
    } 

    private String getQuizQuestionId() { 
     Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 
      return extras.getString(MainActivity.INTENT_QUIZ_QUESTION_ID); 
     } 

     return null; 
    } 
} 




<?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.alexbdev.quizzy.QuizQuestionActivity"> 


    <ScrollView 
     android:id="@+id/scrollView2" 
     android:layout_width="368dp" 
     android:layout_height="80dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="16dp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintTop_toTopOf="parent"> 

     <TextView 
      android:id="@+id/titleQuestionText" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 

      android:ellipsize="none" 
      android:gravity="left" 
      android:textStyle="normal" /> 
    </ScrollView> 

    <LinearLayout 
     android:id="@+id/answerLinearLayout" 
     android:layout_width="368dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="24dp" 
     android:orientation="horizontal" 
     app:layout_constraintTop_toBottomOf="@+id/scrollView2" 
     android:layout_marginLeft="8dp" 
     app:layout_constraintLeft_toLeftOf="parent"></LinearLayout> 

</android.support.constraint.ConstraintLayout> 

編輯:

好吧,我想我需要通過LinearLayout.LayoutParams作爲第二個參數的功能addView,我已經試過這下面的代碼,但只顯示第一個元素。

private void displayAnswers() { 
    createAnswers(); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT 
    ); 
    for (CheckBox answer: answers) { 
     answerLinearLayout.addView(answer, params); 
    } 
} 
+0

這是一種樂趣,尤其是嘗試的東西時,我們是初學者,有人用任何理由低估了你的問題,我嘗試了幾個方面,比如用setLines(1)',se tWidth(400)'和LinearLayout類似的東西。 這是一個要求和交換的平臺,如果有些事情對我的問題不好,請告訴我。 –

回答

0

注意,你的方向是:

android:orientation="horizontal"

,如果你希望它是每行應該是:

android:orientation="vertical"

+0

非常感謝您使用'android:orientation =「vertical」完美地工作' –

相關問題