所以我想要做的是添加按钮到LinearLayout programaticalls,这很好。我希望它们以水平顺序作为一行按钮,所以我将LinearLayout设置为:
<LinearLayout
android:id="@+id/button_frame"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</LinearLayout>
然后我以编程方式添加按钮:
for (String text: textlist) {
Button cbut = new Button(context);
cbut.setText(text);
cbut.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
cbut.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View arg0) {
Log.d(LOGTAGNAME, "TEST: " + buttonText);
}
});
button_frame.addView(cbut);
button_frame.invalidate();
}
这一直有效,直到按钮扩展屏幕宽度。所以我想要发生的是,如果按钮扩展屏幕宽度,则存在水平scollbar。作为替代方案,LinearLayout内的按钮可能存在“换行符”。
我尝试了不同的设置,包括listview周围的滚动视图,但我从未见过滚动条。
所以也许我的问题是LinearLayout没有正确调整大小?每次添加视图后,我必须做什么才能使LinearLayout重新计算宽度? invalidate()完全没有效果。
感谢您的帮助。
答案 0 :(得分:1)
尝试将linearlayout放在horiztonalscrollview中。一旦按钮超出屏幕宽度,这应该提供滚动条。
答案 1 :(得分:1)
您尝试使用简单的滚动视图还是http://developer.android.com/reference/android/widget/HorizontalScrollView.html?如果您不尝试HorizontalScrollView,我认为这必须有所帮助。
答案 2 :(得分:1)
尝试HorizontalScrollView
并为其添加按钮。这将在需要时自动滚动。有关更多帮助,请分享完整的布局代码
答案 3 :(得分:1)
LinearLayout
仅提供视图的“线性”定位;)我的意思是你可以这样做:
[btn1][btn2][btn3][btn4]
或者像这样:
[btn1]
[btn2]
[btn3]
[btn4]
两个变体之间的差异在android:orientation
param中。对于更复杂的观看次数,您应该使用TableLayout
或RelativeLayout
。
如果你想做线性布局creta的可滚动变体这个结构:
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
...any other params...>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horisontal"
...any other params.../>
</HorizontalScrollView>
并像现在这样添加按钮到线性布局。