Программно выравнивать элементы в RelativeLayout? - PullRequest
0 голосов
/ 30 ноября 2011

Я пытаюсь расположить элементы внутри моего RelativeLayout так, чтобы изображение появлялось первым, заголовок справа от него и содержимое под областью изображения. Эти три элемента контента появляются друг над другом. Я понимаю, что мои LayoutParams, вероятно, не установлены, но я не уверен, почему или как это исправить. Любая помощь? Спасибо.

RelativeLayout rl = (RelativeLayout)findViewById(R.id.contentTable);
        for(int i=0;i<itemIndexes.size();i++)
        {
            RelativeLayout item = new RelativeLayout(this);
            item.setId(i);
            RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(320, RelativeLayout.LayoutParams.WRAP_CONTENT);
            if(i>0)
            {
                lp.addRule(RelativeLayout.RIGHT_OF,i-1);
            }
            item.setLayoutParams(lp);
            ImageView iv = new ImageView(this);
                if(globals.myHitetItems.get(itemIndexes.get(i)).image!=-1)
                {
                        iv.setImageResource(globals.myHitetItems.get(itemIndexes.get(i)).image);
                    item.addView(iv);
                }
                else
                {
                    iv.setImageResource(R.drawable.noimage);
                    item.addView(iv);
                }
                RelativeLayout.LayoutParams text1lp =new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                text1lp.addRule(RelativeLayout.RIGHT_OF,iv.getId());
                TextView tv = new TextView(this);
                    tv.setText(globals.myHitetItems.get(itemIndexes.get(i)).name);
                    tv.setTextSize(20);
                    tv.setPadding(3, 3, 3, 3);
                    tv.setLayoutParams(text1lp);
                item.addView(tv);

                RelativeLayout.LayoutParams text2lp=new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                text2lp.addRule(RelativeLayout.BELOW,iv.getId());
                tv = new TextView(this);
                    tv.setText(globals.myHitetItems.get(itemIndexes.get(i)).content);
                    tv.setTextSize(20);
                    tv.setPadding(3, 3, 3, 3);
                    tv.setLayoutParams(lp);
                item.addView(tv);
            rl.addView(item);
        }

1 Ответ

0 голосов
/ 01 декабря 2011

Это выглядит больно отлаживать. Похоже, что относительные правила не устанавливаются и не принимаются. Я предлагаю упростить статический набор тестов, чтобы убедиться, что одна строка представлений может быть установлена ​​относительно друг друга (и убедиться, что одна из них привязана к самой компоновке).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...