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

버튼 클릭안되는 현상. 도와주세요.

0 추천
public class MainActivity extends Activity {
 MoveObject imgView;
 Button btn1, btn2;
 LinearLayout btnLayout;
 RelativeLayout parentView;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  parentView = (RelativeLayout) findViewById(R.id.parentView);
  btnLayout = (LinearLayout) findViewById(R.id.btnLayout);
  btn1 = (Button) findViewById(R.id.btn1);
  btn2 = (Button) findViewById(R.id.btn2);

  btn1.setOnClickListener(this);
  btn1.setFocusable(true);
         btn2.setOnClickListener(this);

  DisplayMetrics metrics = new DisplayMetrics();
  getWindowManager().getDefaultDisplay().getMetrics(metrics);

   int screenWidth = metrics.widthPixels;
                 int screenHeight = metrics.heightPixels;

  RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(
    LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
  params1.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
  btnLayout.setLayoutParams(params1);

  imgView = new MoveObject(getApplicationContext(), screenWidth,
    screenHeight);
  RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(
    LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
  params2.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
  imgView.setLayoutParams(params2);

  imgView.invalidate();

  parentView.addView(imgView);

  Bitmap bm = BitmapFactory.decodeResource(getResources(),
    R.drawable.board);
  imgView.setSelectedImage(bm);
 }
}

class MoveObject extends View {
 public MoveObject(Context context, int Width, int Height) {
  super(context);
  screenWidth = Width;
  screenHeight = Height;
 }

 // 중략...
}

안녕하세요.

parent view를 relativeLayout으로 해서

parent view의 오른쪽에는 actvity_main.xml 의 레이아웃에 버튼 두개를 새로로 배치하였고

왼쪽에는 MoveObject class를 addView 하여 이미지 드래그해서 이동하는것을 구현해줬습니다.

그런데 이렇게 addview를 해주니 버튼 두개 클릭이 되지 않는 현상이 나타나는데 어떻게 해결해야할지 모르겠습니다.

도움주시면 감사하겠습니다!

 

익명사용자 님이 2014년 9월 16일 질문
영역확인을 하기 위해서 각각의 view 객체에 setBackground()로 임의 color좀 집어 넣어보세요.
1. 영역 겹침으로 touch 안됨
2. touch event를 다른녀석이 이미 처리해서 button click 안됨

2가지 경우 중 하나 입니다.
영역은 color 넣어서 확인한 결과 겹치지 않습니다.
MoveObject 클래스에서 터치 이벤트 사용하는데 그거때문에 버튼 클릭이 되지 않는걸까요? 이럴경우....어떻게 하면 좋을지 모르겠네요...

1개의 답변

0 추천
음? 이미지뷰(만드신 클래스) 크기가 화면 전체라 터치를 혼자 받고 있는것 아닌가요?

버튼 두 개는 이미지뷰 아래에 깔려 있는 상태 같은데요?

screenwidth / hieght 값을 1 / 1 로 해서 안보이게 해놓고 버튼 두 개 터치 먹나 확인해보세요
Gioskhan (12,060 포인트) 님이 2014년 9월 16일 답변
감사합니다. 해결했습니다^^
...