Android-如何以编程方式将视图添加到活动的绝对布局中,以设置其位置?

Android-如何以编程方式将视图添加到活动的绝对布局中,以设置其位置?,android,Android,我有一个表单,上面有几个视图,最后一个是绑定到适配器的微调器,通过POST请求从Web服务器获取它的数据,最后我为其他添加了一个附加条目。。。。如果在微调器上选择了此选项,用户在底部输入自定义值的新EditText视图,我已设法使EditText视图显示在屏幕上,但它位于顶部,而不是我的其他视图,我似乎找不到方法使其显示在底部,如我所愿,在微调器下方,以下是我目前掌握的代码: EditText suggestCarrierField = new EditText(getBaseContext()

我有一个表单,上面有几个视图,最后一个是绑定到适配器的微调器,通过POST请求从Web服务器获取它的数据,最后我为其他添加了一个附加条目。。。。如果在微调器上选择了此选项,用户在底部输入自定义值的新EditText视图,我已设法使EditText视图显示在屏幕上,但它位于顶部,而不是我的其他视图,我似乎找不到方法使其显示在底部,如我所愿,在微调器下方,以下是我目前掌握的代码:

EditText suggestCarrierField = new EditText(getBaseContext());
suggestCarrierField.setLayoutParams(new ViewGroup.LayoutParams(
                                ViewGroup.LayoutParams.FILL_PARENT,
                                ViewGroup.LayoutParams.WRAP_CONTENT));
                        suggestCarrierField.setHint("Suggest your carrier");

((AbsoluteLayout) findViewById(R.id.createAccountView)).addView(suggestCarrierField);
((AbsoluteLayout) findViewById(R.id.createAccountView)).invalidate();
为suggestCarrierField设置LayoutParams时,不要使用ViewGroup,而是使用AbsoluteLayout.LayoutParams。它有一个构造函数,它采用高度、宽度和x、y坐标。看。下面是我开发的一个快速应用程序,它演示了以下内容:

public class AbsoluteLayoutTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AbsoluteLayout as = new AbsoluteLayout(this);

        TextView tvTop = new TextView(this);
        tvTop.setText("top");
        tvTop.setLayoutParams(new AbsoluteLayout.LayoutParams(AbsoluteLayout.LayoutParams.FILL_PARENT, AbsoluteLayout.LayoutParams.WRAP_CONTENT, 0, 0));

        TextView tvMid = new TextView(this);
        tvMid.setText("middle");
        tvMid.setLayoutParams(new AbsoluteLayout.LayoutParams(AbsoluteLayout.LayoutParams.FILL_PARENT, AbsoluteLayout.LayoutParams.WRAP_CONTENT, 0, 80));

        TextView tvBot = new TextView(this);
        tvBot.setText("bottom");
        tvBot.setLayoutParams(new AbsoluteLayout.LayoutParams(AbsoluteLayout.LayoutParams.FILL_PARENT, AbsoluteLayout.LayoutParams.WRAP_CONTENT, 0, 180));

        as.addView(tvTop);
        as.addView(tvMid);
        as.addView(tvBot);

        setContentView(as);
    }
}

这将产生三个文本视图。一个在顶部Y-COORD=0,一个在中间Y-COORD=80,一个在底部Y-COORD=180。

< P>使用绝对值表,您需要使用绝对UnutayOut.LayOutPARAMS,而不是VisualGoopy.LayOutPARAM.

int width = 100, height = 25, x = 0, y = 200;
AbsoluteLayout.LayoutParams lp = new AbsoluteLayout.LayoutParams(width, height, x, y);
suggestCarrierField.setLayoutParams(lp);

我已经强烈要求你考虑用RelayValayOutlook或线性布局来实现这一点…AbsoluteLayout不受欢迎,理由很充分。现在有这么多不同的Android设备,屏幕大小不同,AbsoluteLayout无法在所有设备上运行。

非常感谢,我接受了你的建议,我知道AbsoluteLayout存在问题,我已经在努力将我的活动迁移到RelativeLayout,但我需要尽快修复。干杯实际上,android 4.4引入了PdfDocument,除非您使用的是您可以控制的东西,否则使用PdfDocument是很糟糕的。它需要一个视图来打印,所以如果你想使用自己的动态可伸缩pdf模板,我认为绝对布局是最好的选择。