0

我有一个在其中dialog显示的 a layout,其中有 ascrollview和另一个layout带有 some buttons。我的问题是,如果我将其放在layout滚动buttons视图下方,它将不会显示。如果我把它放在scrollview它显示的上方。怎么了 ?

            LinearLayout ldialog = new LinearLayout(Gestionarez.this);
            LinearLayout ldialogb = new LinearLayout(Gestionarez.this);
            LinearLayout ldialogm = new LinearLayout(Gestionarez.this);
            ScrollView scroll = new ScrollView(Gestionarez.this);



            Space space = new Space(Gestionarez.this);
            Space space2 = new Space(Gestionarez.this);
            ldialogb.setOrientation(LinearLayout.HORIZONTAL);
            ldialog.setOrientation(LinearLayout.VERTICAL);
            ldialogm.setOrientation(LinearLayout.VERTICAL);

            ldialog.setPadding(20, 20, 20, 20);
            ldialogb.setPadding(20, 20, 20, 20);


            ldialogb.addView(trimitere, 130, 60);
            ldialogb.addView(space, 60, 60);
            ldialogb.addView(printeaza, 130, 60);
            ldialogb.addView(space2, 60, 60);
            ldialogb.addView(stergere, 130, 60);
            ldialogb.setGravity(Gravity.CENTER | Gravity.BOTTOM);
            Dtv.setText(text);
            Dtv.setTextSize(12);

            Dtv.setGravity(Gravity.CENTER | Gravity.BOTTOM);
            Dtv.setPadding(60, 60, 60, 60);

            scroll.addView(Dtv);

            ldialogm.addView(scroll);
            ldialogm.addView(ldialogb);

            alert.setView(ldialogm);

            dialog = alert.create();

            dialog.show();
4

3 回答 3

1

您没有在任何地方设置任何内容LayoutParams,因此布局没有关于它们是否应该匹配其父视图的高度、包装内容高度等的指导。

我建议改用布局 XML 文件,因为它会使定义、使用和调整布局的过程变得更加容易。

如果您出于某种原因需要继续在代码中定义它,LayoutParams请为您的视图设置。视图LayoutParams来自ViewGroup包含它们的视图。对于 a 中的视图,LinearLayout您应该使用LinearLayout.LayoutParams; 同样,a 中的子 ViewRelativeLayout使用RelativeLayout.LayoutParams.

在这种情况下,您可能希望LinearLayout.LayoutParams像这样使用:

LinearLayout ldialog = new LinearLayout(Gestionarez.this);

ScrollView scroll = new ScrollView(Gestionarez.this);
LinearLayout.LayoutParams scrollLayoutParams = 
    new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
scroll.setLayoutParams(scrollLayoutParams);

ldialog.addView(scroll);
于 2013-07-05T20:09:00.780 回答
1

我相信问题是布局。只有 ScrollView 和 ListView 实际上是可滚动的,其余的将填充屏幕中可能的可用区域,裁剪不可见区域。用 ScrollView 包装对话框视图并设置对话框视图的高度wrap_content

于 2013-07-05T23:28:54.653 回答
0

好吧,最后我成功地使用了重量并这样做:

LinearLayout.LayoutParams p1 = new     LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,0);
p1.weight=20f;
LinearLayout.LayoutParams p2 = new   LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,0);
p2.weight=0.001f;

ldialogm.addView(scroll,p1);
ldialogm.addView(ldialogb,p2);
于 2013-07-06T00:11:45.370 回答