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