Android: добавление представления по клику после самого представления - PullRequest
0 голосов
/ 24 марта 2010

У меня есть LinearLayout View с обработчиком OnClick, и я хочу добавить View после LinearLayout программно, когда происходит событие OnClick.

public void onClick(View view) {
    LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    LinearLayout info = (LinearLayout) li.inflate(R.layout.infolayer, null);
    // view.addViewAfter(info)
}

info - это вид, который я хочу добавить. view - это вид, по которому идет клик, и после которого я хочу добавить info.

Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 09 января 2014

Если вы хотите добавить представление после текущего линейного макета, а затем сначала получить идентификатор родительского макета, в котором находится линейный макет.

например, пусть у вас есть линейный макет с идентификатором «ll» в относительном макете (с идентификатором parentlayout) и при нажатии кнопки вы хотите добавить текстовое представление под макетом вкладыша

public void onClick(View view) {

RelativeLayout rl=new RelativeLayout(this);

TextView tv=new TextView(this)
//set param value ur requirement
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.BELOW,R.id.ll);
}
0 голосов
/ 14 ноября 2010

Вы можете вставить через кодирование, и вам не нужно раздувать. Вы можете создать представление любого типа, вызывая конструктор и передавая контекст. Ссылка на контекст может быть сохранена в представлении в виде поля при построении представления. Таким образом, вы всегда можете создать свой вид на лету.

Чтобы добавить представление к LinearLayout, вам просто нужно позвонить addView. А потом, если вы хотите удалить его, просто позвоните removeView.

Но событие onClick находится внутри объекта LinearLayout? Это может быть проблемой, потому что представления внутри LinearLayout могут потреблять событие, прежде чем оно достигнет вашего метода. Смотрите этот пост , чтобы узнать об этом.

0 голосов
/ 24 марта 2010

Предполагая, что у вас есть известное количество линейных различий, вы можете просто поместить их в ресурс XML и пометить их как «Унесенные». Когда происходит событие, сделайте их видимыми. Когда они помечены как пропавшие, они не должны занимать место на экране.

...