динамическое добавление представления к макету активности

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

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

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

РЕДАКТИРОВАТЬ: добавить код

// 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);
7
задан Blair Jones 18 August 2010 в 19:37
поделиться

1 ответ

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

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

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

3
ответ дан 7 December 2019 в 16:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: