【问题标题】:Relative layout not working programmatically added相对布局无法以编程方式添加
【发布时间】:2011-07-12 14:45:54
【问题描述】:

我刚刚开始 android 编程,写了一个快速的代码,并没有设法让它做我想做的事。基本上,我希望出现一个对话框,其中包含 2 个文本框和一个以特定布局显示的图像。我有以下代码:

AlertDialog.Builder dialog = new AlertDialog.Builder(this);

    RelativeLayout dialogItems = new RelativeLayout(this);
    EditText itemTitle = new EditText(this);
    EditText itemBody = new EditText(this);
    ImageView dIcon = new ImageView(this);

    itemTitle.setText("Note Title");
    itemBody.setText("Note Details");
    dIcon.setImageResource(R.drawable.create);

    final RelativeLayout.LayoutParams imageParam = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    imageParam.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
    imageParam.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    dIcon.setLayoutParams(imageParam);
    dialogItems.addView(dIcon, imageParam);

    final RelativeLayout.LayoutParams titleParam = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    titleParam.addRule(RelativeLayout.RIGHT_OF, dIcon.getId());
    titleParam.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    itemTitle.setLayoutParams(titleParam);
    dialogItems.addView(itemTitle, titleParam);

    final RelativeLayout.LayoutParams bodyParam = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    bodyParam.addRule(RelativeLayout.ALIGN_LEFT, itemTitle.getId());
    bodyParam.addRule(RelativeLayout.BELOW, itemTitle.getId());
    itemBody.setLayoutParams(bodyParam);
    dialogItems.addView(itemBody, bodyParam);

    dialog.setView(dialogItems);

    dialog.show();

有谁知道为什么这不起作用?问题是,弹出窗口出现了,但所有项目都只是在左上角重叠。谢谢

附:我检查了其他帖子和问题,甚至答案都不起作用!所以请修复我的代码,而不是把我链接到另一个问题。

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    您没有设置 ID,因此每个视图都具有相同的 ID (-1)。这应该有效:

    private static final int DIALOG_ITEMS_ID = 1;
    private static final int ITEM_TITLE_ID = 2;
    private static final int ITEM_BODY_ID = 3;
    private static final int ICON_ID = 4;
    
    RelativeLayout dialogItems = new RelativeLayout(this);
    dialogItems.setId(DIALOG_ITEMS_ID);
    EditText itemTitle = new EditText(this);
    itemTitle.setId(ITEM_TITLE_ID);
    EditText itemBody = new EditText(this);
    itemBody.setId(ITEM_BODY_ID);
    ImageView dIcon = new ImageView(this);
    dIcon.setId(ICON_ID);
    

    【讨论】:

    • 谢谢,我认为它会自动为项目提供自己的 ID...:P
    猜你喜欢
    • 2013-07-06
    • 1970-01-01
    • 2013-07-05
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2019-09-04
    • 1970-01-01
    相关资源
    最近更新 更多