Программно RelativeLayout проблема с макетом - PullRequest
0 голосов
/ 28 мая 2011

У меня есть диалоговое окно «Достижения», и мне хотелось бы:

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 Ответ

1 голос
/ 28 мая 2011

Вам необходимо использовать RelativeLayout.BELOW

Для строки вы можете использовать метку с цветом фона.

...