2013-08-12 3 views
-1

그래서 Imagebutton을 동적으로 추가하고 제거하는 선형 레이아웃에서 작업하고 있습니다. 따라서 이미지 버튼을 클릭하고 작업을 수행 할 때마다 이미지 버튼이 제거되고 다른 이미지 버튼/s로 변경됩니다. 것은 동일한 위치에 새로운 imagebutton을 추가 할 수 있도록 클릭 한 버튼의 위치를 ​​유지하고 싶습니다.선형 레이아웃에서 클릭 한 버튼의 위치를 ​​얻습니다.

  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

ID를 매핑하면 언제든지 액세스 할 수 있습니까? – bofredo

답변

0

OnClickListener 본문에 질문에 코드가 붙여 있습니까? 그렇다면, 당신이 removeView()를 호출하기 전에 다음과 같은 뭔가를 수정 :

float originalX = view.getX(); 
float originalY = view.getY(); 
view 클릭되고있는하여 ImageButton에 대한 참조입니다

한 다음 새 버튼 setX()setY()를 호출합니다.

그냥 머리 위로 올리면 버튼이 클릭되고 추가되는 버튼이 동일한 높이와 함께 사용되는 경우에만 작동합니다. 그렇지 않은 경우 동일한 x, y 점을 찾기 위해 높이/너비 차이 대 원래 크기의 X/Y를 기준으로 계산해야합니다.

+0

더 큰 컨텍스트를 알지 못해서 유용할지 모르겠다. 실제로'ImageButton'을 새로운 것으로 교체해야합니까? 아니면 드로어 블을 변경하여 간단히 얻을 수 있습니까? 이미지 만 바꾸면 CPU에 대한 작업이 훨씬 줄어 듭니다. –

+0

아직 시도하지 않았습니다. 그래도 작동하는 것 같습니다. 그러나 indexOfChild는 꽤 잘 작동합니다. – Bedeir

1

수정 하나 새 버튼을 추가하는 대신 ImageButton의 이미지를 변경하는 것이 더 쉽지 않습니까? 상태를 구분하려면 이미지 또는 상태 변수를 확인하십시오.

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

더 쉽지만 각 버튼마다 다른 기능이 필요합니다. 따라서 버튼을 한 번 누르면 버튼을 변경할 수 있고 다른 두 개의 버튼이 추가 될 수 있습니다. 그 중 하나가 누를 수 있습니다. 나는 그것을 충분히 분명히하기를 바란다. – Bedeir

관련 문제