마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

LayoutParams로 만든 뷰 관리하기

0 추천

특정 이벤트 발생시 원하는 좌표에 텍스트뷰를 생성하였습니다.

뷰는 1개일수도, 여러개 일수도 있습니다.

 

그 후 뷰의 위치를 조절해야하는 경우가 있는데

 

텍스트뷰가 하나뿐일때는 해당 뷰가 이동이 가능한데

 

여러개일때는 마지막에 setLayoutParams 한 텍스트뷰만 이동합니다.

 

추가된 텍스트뷰 전체를 컨트롤할 수있는법좀 도와주세요 소스코드 첨부합니다.

 

surface_parent = (RelativeLayout) findViewById(R.id.surface_parent);

 

TV = new TextView(context);
           
TV_PARAMS = new RelativeLayout.LayoutParams
(
                    ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT
);
 
float y = ARR_Y.get(ARR_Y.size() - 1);
float x = ARR_X.get(ARR_X.size() - 1);
TV_PARAMS.topMargin = (int) y;
TV_PARAMS.leftMargin = (int) x;
TV.setLayoutParams(TV_PARAMS);
 
TV.setTextColor(Color.RED);
TV.setTextSize(7);
TV.setText("텍스트추가");
 
surface_parent.addView(TV);
 
 
텍스트 이동하는부분
 
MeasurePanel.TV_PARAMS.topMargin +=diffY;
MeasurePanel.TV_PARAMS.leftMargin +=diffX;
MeasurePanel.TV.setLayoutParams(MeasurePanel.TV_PARAMS);
 
이동하는부분은 TV_PARAMS의 마진을 변경시켜주는방법으로 진행하고있습니다.
 
 
 
TV_PARAMS는 마지막에 추가된 텍스트뷰의 값을 가지므로 

제가 말한 결과는 당연한것같은데 어떻게 처리해야할까요

음무 (17,820 포인트) 님이 2014년 1월 13일 질문

1개의 답변

+1 추천
 
채택된 답변
혹시 하나의 OnTouch 메소드에서 처리하지 않으신가요?

 

각각의 텍스트뷰에 별개의 layoutParams를 설정하고 터치리스터를 등록하거나 아니면 OnTouch에서 view의 id를 식별하여 처리해야 할 것 같네요.

 

화면에 두 개의 텍스트뷰를 띄우고 각각 터치하여 드래그하는 예제를 만들었습니다. 참고하세요.

 

http://blog.naver.com/goodsogi/40204481491
방귀과장 (18,940 포인트) 님이 2014년 1월 13일 답변
음무님이 2014년 1월 13일 채택됨
...