2013-08-12 3 views
-1

Итак, я работаю над линейной компоновкой, где я динамически добавляю и удаляю Imagebuttons. Таким образом, каждый раз, когда нажимается кнопка изображения и выполняется действие, элемент изображения удаляется и изменяется с помощью другого образа/s. Дело в том, что я бы хотел сохранить позицию нажатых кнопок, поэтому я могу добавить новую кнопку изображения в том же месте.получить позицию щелкнутой кнопки в линейной компоновке

  final ViewGroup.LayoutParams lpiv = iv.getLayoutParams(); 
      il.removeView(iv); 

      int ilBtn = R.drawable.ta; 

      iv3.setImageResource(ilBtn); 
      iv5.setImageResource(ilBtn); 

      iv3.setClickable(false); 
      iv.setClickable(false); 
      il.addView(iv5, lpiv); 
      il.addView(iv3, lpiv); 
      //iv3.setLayoutParams(lpiv); 
+0

map идентификаторы, так что вы можете получить к ним доступ в любое время? – bofredo

ответ

0

вставили ли код в вопросе тела вашего OnClickListener? Если это так, просто изменить его, чтобы сделать что-то вроде следующего, прежде чем позвонить removeView():

float originalX = view.getX(); 
float originalY = view.getY(); 

view, где есть ссылка на ImageButton, который будучи щелкнули, а затем вызвать setX() и setY() на ваших новых кнопок.

Просто хедз-ап, это будет работать только в том случае, если нажата кнопка и добавляются те же высоты и с. Если это не так, вам нужно будет сделать некоторые вычисления, основанные на X/Y исходного, по сравнению с разницей высоты и ширины, чтобы найти ту же точку x, y.

+0

Кроме того, не совсем уверен, если он полезен, так как я не знаю большего контекста. Вам действительно нужно заменить «ImageButton» на новый, или вы можете просто получить его, изменив его способный к переносу? Изменение только изображения будет намного меньше работать на процессоре. –

+0

Я еще не пробовал. Кажется, это работает. Однако indexOfChild работает очень хорошо. – Bedeir

1

Исправить меня, но было бы проще просто изменить изображение ImageButton вместо добавления новой кнопки? Чтобы отличить статус, просто проверьте изображение или переменную состояния.

customImageButton.setBackgroundResource(R.drawable.imageName); 
this.status = this.NEW_STATUS; 
+0

Это проще, но для каждой кнопки мне нужна разная функциональность. Таким образом, кнопка может быть изменена после нажатия и добавлены две другие кнопки. Одним из них может быть нажатая кнопка. Надеюсь, я сделал это достаточно ясно. – Bedeir

Смежные вопросы