我有一些 Android 开发经验,但我完全迷失在一个简单的任务中(至少看起来很简单)。
我有一个字符串数组列表,我想从布局列表中的字符串创建按钮。它不一定是按钮 - 它可以是任何可点击的对象(带有文本)。
主要问题是我想一个接一个地创建它们,当它们不适合屏幕时 - 应该创建新行。
普通线性布局可以将它们水平排列,但不会创建新行。我也尝试了网格视图,它几乎是它 - 但它是一个网格,所以所有列的大小都相同(但文本可以不同,所以我不喜欢它)。
任何想法如何做到这一点?提前致谢。
Android 中没有流式布局。您必须要么实现自己的自定义布局(不是微不足道的),要么找到第三方流布局。
你可以试试这样的。
// 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;