0

我有一些 Android 开发经验,但我完全迷失在一个简单的任务中(至少看起来很简单)。

我有一个字符串数组列表,我想从布局列表中的字符串创建按钮。它不一定是按钮 - 它可以是任何可点击的对象(带有文本)。

主要问题是我想一个接一个地创建它们,当它们不适合屏幕时 - 应该创建新行。

普通线性布局可以将它们水平排列,但不会创建新行。我也尝试了网格视图,它几乎是它 - 但它是一个网格,所以所有列的大小都相同(但文本可以不同,所以我不喜欢它)。

任何想法如何做到这一点?提前致谢。

4

2 回答 2

1

Android 中没有流式布局。您必须要么实现自己的自定义布局(不是微不足道的),要么找到第三方流布局。

于 2012-05-05T00:23:06.533 回答
1

你可以试试这样的。

// get the width of the screen
Display display = getWindowManager().getDefaultDisplay();
int windowWidth = display.getWidth();

// keep track of the width of your views on the current row
int cumulativeWidth = 0;

// the width of your new view
int newWidth = // insert some number here based on the length of text.

// get your main layout here
ViewGroup main = (ViewGroup)findViewById(R.id.YOUR_HOLDING_LAYOUT);

// the linear layout holding our views
LinearyLayout linear = null;
// see if we need to create a new row
if (newWidth + cumulativeWidth > windowWidth){
    linear = new LinearLayout(this);
    // set you layout params, like orientation horizontal and width and height. This code may have typos, so double check
    LayoutParams params = new LayoutParams(LinearLayout.FILL_PARENT, LinearLayout.WRAP_CONTENT);
   params.setOrientation(HORIZONTAL); // this line is not correct, you need to look up how to set the orientation to horizontal correctly.
    linear.setParams(params);
    main.addView(linear);
// reset cumulative width
cumulativeWidth = 0;
}

// no create you new button or text using newWidth
View newView = ... // whatever you need to do to create the view

linear.addView(newView);

//keep track of your cumulatinv width
cumulativeWidth += newWidth;
于 2012-05-08T19:14:09.520 回答