Я все еще довольно новичок в разработке Android, и я не смог найти примеров того, как это сделать.Создание макета в классе с расширенным представлением
В моей работе я использую «setContextView (новый myViewClass)», чтобы назначить класс расширенного представления как загружаемый. Все работает отлично с точки зрения загрузки представления, где я создаю различные элементы (LinearLayouts, кнопки и т. Д.) На основе ряда условий. К сожалению, я не могу заставить любой из этих элементов фактически появляться на экране.
Я думаю, мой вопрос идет к лучшему пониманию Представлений. Все примеры, которые я видел, касаются установки xml-файла в качестве базового представления, а затем изменения его в коде. Есть ли альтернатива этому?
Спасибо.
Вот пример кода, который я пытался сделать. Есть и другие вещи, но это актуальная информация. Для контекста программы, этот класс обоснован с setContextView(new createView(this))
:
public createView(Context c){
super(c);
// Create a simple layout
LinearLayout layout = new LinearLayout(top.getContext());
layout.setOrientation(LinearLayout.VERTICAL);
// Create test text
TextView mTestText = new TextView(c);
mTestText.setText("This is a test");
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(10, 10, 10, 10);
layout.addView(mTestText, lp);
}
Спасибо. Но теперь, когда у меня есть этот макет, как мне заставить его отображаться на экране? Я считаю, что представление, созданное в моем классе, не привязано к экрану. Нужно ли мне что-то возвращать, использовать надуватель и т. Д.? – duanemat
Либо добавьте представление в другое представление на экране, либо установите его как представление содержимого. Используйте ** setContentView ** в своей деятельности, чтобы установить его как основной вид. Если вам нужен небольшой пример, я заархивировал свой маленький тест для класса в своем ответе: http://www.box.net/shared/j9x3076702 – Klarth