簡體   English   中英

如何以編程方式在布局內生成文本視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM