#android #xml
#Android #xml
Вопрос:
Я пытался добавить несколько текстовых представлений и кнопок при onClick, и это лучший код, который я нашел, который действительно работает:
RelativeLayout relative = (RelativeLayout) findViewById(R.id.RelativeLayout01);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
(LayoutParams.WRAP_CONTENT), (LayoutParams.WRAP_CONTENT));
TextView tv = new TextView(getApplicationContext());
tv.setLayoutParams(lp);
tv.setText("Shift" mShiftCount);
EditText edittv = new EditText(getApplicationContext());
edittv.setLayoutParams(lp);
relative.addView(tv);
relative.addView(edittv);
Кажется, это лучший код для добавления дополнительных элементов, похожих на те, что у меня уже есть в моем main.XML досье.
Моя проблема в том, что когда они добавляются, они появляются в верхней части экрана, и я не уверен, как добавить дополнительные параметры к объектам.
Как бы мне разместить textview и edittext под моими другими элементами, указанными в XML?
Ответ №1:
Что вам нужно сделать, это создать RelativeLayout.LayoutParams
(см. Здесь ), когда вы добавляете такие представления, как tv и edittv, в RelativeLayout
. В вашем RelativeLayout.LayoutParams
, вам нужно определить те же параметры, которые вы бы дали другим вашим RelativeLayout
объектам. Вот пример:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.BELOW, R.id.idOfWhatYouWantToBeBelowOf);
addView(tv, params);
Комментарии:
1. Это работает! Спасибо! У меня просто есть еще одна проблема: как мне сделать так, чтобы EditText отображался под TextView? Это не работает:
2. ‘RelativeLayout. Параметры LayoutParams = новый RelativeLayout. LayoutParams(RelativeLayout. Параметры компоновки. WRAP_CONTENT, RelativeLayout . Параметры компоновки. WRAP_CONTENT); params.addRule(RelativeLayout. НИЖЕ R.id.syncCalendar); tv.setLayoutParams(параметры); RelativeLayout. LayoutParams params2 = новый RelativeLayout. LayoutParams(RelativeLayout. Параметры компоновки. WRAP_CONTENT, RelativeLayout . Параметры компоновки. WRAP_CONTENT); params2.addRule(RelativeLayout. НИЖЕ, tv); ‘
3. Вам нужно присвоить
tv
объекту идентификатор, просто выполнивtv.setId(123)
(или какое-то случайное число). Затем в параметрах макета просто используйте 123 в качестве идентификационного номера. Не забудьте принять этот ответ, если он показался вам полезным!4. Работает отлично! Большое спасибо, я думал, что потратил здесь целую ночь, но это решило мои проблемы :).
Ответ №2:
Во-первых, в вашем представлении определенно есть некоторые статические компоненты и некоторые динамические компоненты. не могли бы вы указать, какой у вас файл макета, чтобы я мог предоставить вам более подробную информацию в вашем приложении.
Комментарии:
1. Мой main.xml имеет LinearLayout, ScrollView, RelativeLayout внутри этого, а затем многочисленные текстовые представления, кнопки, EditTextxs и AutoCompleteTextViews.