我是 Android 开发的新手,而且我还在学习 Java,所以请多多包涵!
我正在创建一个应用程序,它可以获取有关任务的信息(我将其作为一种家庭作业计划器),存储该信息,然后将其显示在列表中。该程序必须能够从后台文件动态生成列表。到目前为止我已经管理了所有这些,但是当我为每个任务创建一个基本输出时,包含使用 LinearLayout 的“主题”和“详细信息”变量,它们出现在屏幕上重叠。它们似乎都在正确地创建,但它们都被放在同一个地方。我可以设置哪些属性使它们显示在垂直列表中???
这是我生成 View 组并显示它们的代码 fragment 。这是从程序另一部分的循环中调用的,该循环查找内部存储中的文件数。
TextView subjView;
TextView detailView;
RelativeLayout displayLayout;
LinearLayout taskDisplay = new LinearLayout(this);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
subjView = new TextView(this);
detailView = new TextView(this);
displayLayout = (RelativeLayout) findViewById(R.id.relative_display_layout);
subjView.setText(subject);
detailView.setText(details);
layoutParams.setMargins(0, 0, 0, 0);
taskDisplay.addView(subjView, layoutParams);
layoutParams.setMargins(10, 0, 0, 0);
taskDisplay.addView(detailView, layoutParams);
displayLayout.addView(taskDisplay);
最佳答案
如果我理解正确,我认为你的问题只是你声明然后更改 layoutParams
边距,这将它们设置为相同,这与你的 TextViews
重叠>.
编辑
好吧,我仍然不能 100% 确定您是如何完成所有这些操作的,因此我的示例可能需要进行调整。我试图快速将其拼凑在一起,因此请原谅我的任何小错误。
动态布局的新模型:
TextView subjView, detailView;
RelativeLayout displayLayout, rl;
// I am assuming this is your main layout
displayLayout = (RelativeLayout) findViewById(R.id.relative_display_layout);
// Just using a for loop as an example of a loop event, not sure how you are accomplishing this
for(int i = 0; i < data.length(); i++) {
RelativeLayout.LayoutParams rllp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 100);
if (i > 0) {
int rePositionRule = i;
rllp.addRule(RelativeLayout.BELOW, rePositionRule);
}
RelativeLayout taskDisplay = new RelativeLayout(this);
taskDisplay.setLayoutParams(rllp);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(0, 0, 0, 0);
LinearLayout.LayoutParams layoutParams2 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams2.setMargins(10, 0, 0, 0);
subjView = new TextView(this);
detailView = new TextView(this);
subjView.setText(subject);
subjView.setLayoutParams(layoutParams);
detailView.setText(details);
detailView.setLayoutParams(layoutParams2);
taskDisplay.addView(subjView);
taskDisplay.addView(detailView);
displayLayout.addView(taskDisplay);
}
关于android - 动态生成的 LinearLayouts 重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13057773/