以编程方式RelativeLayout布局问题

时间:2011-05-28 13:26:19

标签: android layout relativelayout

我有一个成就对话框,并希望如此:

Description

这是我的代码,每个成就都是相对布局,并且都包含在LinearLayout(pnlAchievement)中:

            RelativeLayout pnlItem = new RelativeLayout(Parent);
        pnlItem.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));

        TextView txtItemName = new TextView(Parent);
        txtItemName.setText(ACHIEVEMENTS_NAME[i]);
        txtItemName.setLayoutParams(new LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

        TextView txtAchived = new TextView(Parent);
        txtAchived.setText(Achived[i] ? "Achieved!" : "Not Achieved!");
        RelativeLayout.LayoutParams rlpAchived = new RelativeLayout.LayoutParams(
                new LayoutParams(LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT));
        rlpAchived.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        rlpAchived.addRule(RelativeLayout.ALIGN_RIGHT, txtItemName.getId());
        txtAchived.setLayoutParams(rlpAchived);

        TextView txtDescription = new TextView(Parent);
        txtDescription.setText(ACHIEVEMENTS_DESCRIPTION[i]);
        txtDescription.setHorizontallyScrolling(false);
        RelativeLayout.LayoutParams rlpDesc = new RelativeLayout.LayoutParams(
                new LayoutParams(LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT));
        rlpDesc.addRule(RelativeLayout.ALIGN_BOTTOM, txtItemName.getId());
        rlpDesc.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
        txtDescription.setLayoutParams(rlpDesc);

        pnlItem.addView(txtItemName);
        pnlItem.addView(txtAchived);
        pnlItem.addView(txtDescription);
        pnlAchievement.addView(pnlItem);

它很好地列出了所有的成就,但描述不在名称之下,它是名称,如下:

enter image description here

而且,你能否告诉我如何在不使用Canvas的情况下在每个项目之间添加线条(这不是很重要,但如果有,那就更好了)?

1 个答案:

答案 0 :(得分:1)

您需要使用RelativeLayout.BELOW

对于该行,您可以使用带有backgroundcolor的Label。

相关问题