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