динамически добавлять вид к макету деятельности - PullRequest
7 голосов
/ 18 августа 2010

У меня есть пользовательское представление (расширение TextView), которое я хочу динамически добавить в свой макет (не хочу включать его в файл main.xml).

В книге говорится, что нужно извлечь RelativeLayout с помощью findViewById () в моем коде Java, затем создать новый экземпляр моего пользовательского представления, а затем добавить addView в RelativeLayout для добавления нового представления.

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

РЕДАКТИРОВАТЬ: добавление кода

// changed to an imageview as I thought it might be easier to see an image
RelativeLayout rel = (RelativeLayout) findViewById(R.id.rellay);
MyCustomImageView mciv = new MyCustomImageView(null);
mciv.setId(5);
LayoutParams p = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
mciv.setLayoutParams(p);
mciv.setImageResource(R.drawable.someImage);
rel.Addview(mciv);

1 Ответ

3 голосов
/ 18 августа 2010

Пожалуйста, оставьте свой код, где вы добавляете представление.Но да, вы можете пропустить параметры для ширины и высоты.Попробуйте что-то вроде

LayoutParams p = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.FILL_PARENT);    
txtView.setLayoutParams(p);

или что вы хотите, чтобы ширина и высота были.Также в xml layout, layout_width и layout_height являются обязательными атрибутами.

...