以编程方式添加按钮时调整父LinearLayout的大小

时间:2012-01-10 12:36:59

标签: android resize android-linearlayout

所以我想要做的是添加按钮到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()完全没有效果。

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

尝试将linearlayout放在horiztonalscrollview中。一旦按钮超出屏幕宽度,这应该提供滚动条。

答案 1 :(得分:1)

您尝试使用简单的滚动视图还是http://developer.android.com/reference/android/widget/HorizontalScrollView.html?如果您不尝试Horizo​​ntalScrollView,我认为这必须有所帮助。

答案 2 :(得分:1)

尝试HorizontalScrollView并为其添加按钮。这将在需要时自动滚动。有关更多帮助,请分享完整的布局代码

答案 3 :(得分:1)

LinearLayout仅提供视图的“线性”定位;)我的意思是你可以这样做:

[btn1][btn2][btn3][btn4]

或者像这样:

[btn1]
[btn2]
[btn3]
[btn4]

两个变体之间的差异在android:orientation param中。对于更复杂的观看次数,您应该使用TableLayoutRelativeLayout

如果你想做线性布局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>

并像现在这样添加按钮到线性布局。