[英]How can I programmatically generate textviews inside layout
我需要從一個隨機的、API 生成的、ArrayList 的布局中生成 TextView。 我似乎無法找到一種方式,它們出現在一行中,就像一個字符串,一個接一個地出現,並且一旦該行達到最大布局寬度限制,也會向下移動。 我希望每個 TextView 都在我想單擊它們時分開。
這是當前的代碼,但該行停止了,我不知道如何將其移到下方。 目前我使用相對布局作為基本布局,但這不是必需的。
for (int i = 0; i < abc.size(); i++) {
titleText = new TextView(this);
titleText.setId(i);
titleText.setText(abc.get(i));
relativeLayout.addView(titleText, i);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(10, 10, 10, 10);
layoutParams.addRule(RelativeLayout.RIGHT_OF, titleText.getId() - 1);
titleText.setLayoutParams(layoutParams);
titleText.setTextColor(getResources().getColor(R.color.teal_700));
tvArray.add(titleText);
}
例子
在你的 xml
<LinearLayout
android:id="@+id/my_ll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
</LinearLayout>
並在yourjava.class 中編寫代碼
LinearLayout my_ll = (LinearLayout) findViewById(R.id.my_ll);
for(int i=0;i<your_number_of_textviews;i++)
{
TextView text = new TextView(this);
text.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
text.setText(""+i);
my_ll.addView(text);
}
我認為這個解決方案可以解決它。 首先在循環之前使用 - 檢索屏幕寬度的某處
Point screenSizePoint = new Point();
// this gives you the furthest point from 0,0 e.g. 1440x3168
getWindowManager().getDefaultDisplay().getSize(screenSizePoint);
int sum = 0;
然后你在某處檢索你的 abc 列表。 然后你總是使用這個計算當前 TextView 的寬度
titleText.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int width = titleText.getMeasuredWidth();
sum += width;
if (sum >= screenSizePoint.x) {
// shift to next line
}
並將其與之前放置的文本視圖的寬度相加,如果寬度大於屏幕寬度,則只需從另一行開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.