У меня проблема с моим приложением для Android. Я хочу динамически создать 4 TableRows в TableLayout. Каждая из этих строк будет содержать 1 TextView. Я хочу, чтобы TextView выглядел так:
textview1
textview2
textview3
textview4
в 4 разных ряда.
Я могу динамически создавать Tewtview, но размеры не совпадают. Например, если мое первое текстовое представление содержит большой текст, оно выглядит как один текст без продолжения на следующую строку.
Прочитал много похожих вопросов, но решения не нашел. Вот мой файл макета:
<Relativelayout>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_marginTop="10dip" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_below="@+id/didyoudo"
android:layout_above="@+id/bardown" android:scrollbarFadeDuration="1000"
android:scrollbarSize="12dip">
<TableLayout android:id="@+id/answertable"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:stretchColumns="0,1" android:collapseColumns="2">
</TableLayout>
</ScrollView>
<Relativelayout/>
И вот как я динамически генерирую строки и текстовое представление
for (k =0; k< questionCount;k++ ) {
//tmpDict = trivialist.get(k);
Trivia trivia = trivialist.get(k);
TableRow row = new TableRow(getApplicationContext());
TableRow row1 = new TableRow(getApplicationContext());
TableRow row2 = new TableRow(getApplicationContext());
TableRow row3 = new TableRow(getApplicationContext());
TextView tv1 = new TextView(getApplicationContext());
TextView tv2 = new TextView(getApplicationContext());
TextView tv3 = new TextView(getApplicationContext());
TextView tv4 = new TextView(getApplicationContext());
desc = trivia.getAnswerDesc();
quizquestion = trivia.getStrQuestion();
tv1.setText("\n\t" + quizquestion);
tv1.setTextColor(Color.WHITE);
tv1.setSingleLine(false);
tv1.setLines(2);
tv1.setHorizontallyScrolling(false);
tv1.setTextSize(15);
tv1.setTypeface(null, Typeface.BOLD);
try {
//if the below value is null, it means that the selected answer is wrong
// and enters to the else block
if (triviaDict.get("correctAnswer") != null) {
String answer = (String) triviaDict.get("correctAnswer");
tv2.setText("\n\t" + "You said: "+ answer + "\n");
tv2.setTextColor(Color.WHITE);
tv2.setSingleLine(false);
tv2.setHorizontallyScrolling(false);
tv2.setTextSize(15);
tv2.setLines(2);
tv2.setTypeface(null, Typeface.BOLD);
tv3.setText("\t" +"That's Right."+ desc+"\n");
tv3.setTextColor(Color.WHITE);
tv3.setSingleLine(false);
tv3.setHorizontallyScrolling(false);
tv3.setTextSize(15);
tv3.setLines(2);
tv3.setTypeface(null, Typeface.BOLD);
tv4.setText("\t" + "_____________________________________" );
tv4.setTextColor(Color.WHITE);
tv3.setHorizontallyScrolling(false);
tv4.setTypeface(null, Typeface.BOLD);
} else {
String wronganswer = (String) triviaDict.get("selected");
tv2.setText("\n\t" + "You said:"+ wronganswer +"\n" );
tv2.setTextColor(Color.WHITE);
tv2.setTextSize(15);
tv2.setLines(2);
tv2.setSingleLine(false);
tv2.setTypeface(null, Typeface.BOLD);
tv3.setText("\t" + "Actually," + desc +"\n");
tv3.setTextColor(Color.WHITE);
tv3.setTextSize(15);
tv3.setLines(2);
tv3.setSingleLine(false);
tv3.setTypeface(null, Typeface.BOLD);
tv4.setText("\t" + "_____________________________________" );
tv4.setTextColor(Color.WHITE);
tv3.setHorizontallyScrolling(false);
tv4.setTypeface(null, Typeface.BOLD);
}
} catch (Exception e) {
e.printStackTrace();
}
tv1.setLayoutParams(new TableRow.LayoutParams(0,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,10));
tv2.setLayoutParams(new TableRow.LayoutParams(0,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,10));
tv3.setLayoutParams(new TableRow.LayoutParams(0,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,10));
row.addView(tv1);
row1.addView(tv2);
row2.addView(tv3);
row3.addView(tv4);
answerTable.addView(row);
answerTable.addView(row1);
answerTable.addView(row2);
answerTable.addView(row3);
}
Но ничего не работает идеально. Это работает для 3-го текстового просмотра, но не для 1-го. Не знаю, что происходит.
Может ли кто-нибудь сказать мне, что делать.
Обновить
У меня нет проблем с этим кодом, за исключением того, что только tv3 переходит к следующей строке большого текста, но не tv1. Я хочу, чтобы tv1, tv2 и tv3 продолжались в следующей строке в случае большого текста