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

framelayout 중첩 질문입니다.

0 추천

현재 iface 라는 레이아웃 위에 opengl 과 pinch to zoom 기능을가진 레이아웃 중첩을 하였습니다.

 

iface.xml 에서 버튼기능을 추가하게되면 디스플레이에 버튼이 보이긴하나 여기서 onclick 리스너 기능을 넣으면 버튼이 먹히질않습니다.

 

아마 iface레이아웃이 맨밑에있어서 그런가 하는생각도들긴합니다. pinchtozoom 레이아웃 위에 버튼객체만 가지고있는 레이아웃을

 

중첩시키려고하는데 어떻게 해야할지 잘모르겠습니다. 또 pinchtozoom 레이아웃위에 버튼레이아웃을 올려놓으면 

 

버튼객체만 작동되는지 아니면 배경화면 자체때문에 밑에있는 pinchtozoom기능이 작동하지않는건지 궁금합니다.

iface.java

pinchToZoom pinchToZoom;
@Override
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.iface);
		
		
		GLSurfaceView glSurfaceView =(GLSurfaceView) findViewById(R.id.glsurfaceview);
		glSurfaceView.setRenderer(new MyRenderer());
		//opengl 렌더러 불러오기
		
		pinchToZoom = new pinchToZoom(this);
		
		viewerContainer = (FrameLayout) findViewById(R.id.viewerContainer);
		FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
				FrameLayout.LayoutParams.MATCH_PARENT,
				FrameLayout.LayoutParams.MATCH_PARENT);
        viewerContainer.addView(pinchToZoom, params);
       //pinchtozoom 레이아웃 중첩
  }
//pinchtozoom 기능을 가진 레이아웃은 잘작동됩니다. 

iface.xml

<FrameLayout  xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_height="match_parent"
      android:layout_width="match_parent">
	
	<android.opengl.GLSurfaceView
	    android:id="@+id/glsurfaceview"
	    android:layout_width="match_parent"
	    android:layout_height="match_parent"/>
		
	<FrameLayout
		android:id="@+id/viewerContainer"
    	android:orientation="vertical"
	    android:layout_width="match_parent"
	    android:layout_height="match_parent"
	    >
		
		
	</FrameLayout>
		
	<FrameLayout
		android:id="@+id/viewerContainer_btn1"
    	android:orientation="vertical"
	    android:layout_width="match_parent"
	    android:layout_height="match_parent"
	    >
</FrameLayout>

 

익명사용자 님이 2014년 2월 11일 질문

1개의 답변

0 추천
일단 원인 부터 보죠~~!

보통 뷰가 상단에 위치해도 하단의 위젯 터치는 되도록 되어있습니다.

이는 뷰의터치 리스너 기본 리턴값이 false이기 때문이고 현재 님이 쓰시는 핀치투줌은 리스너의 리턴값이 true이므로 다음

하단 뷰로 이벤트가 넘어가지 않아 클릭 이벤트가 발생 하지 않는 겁니다.

그리하여 님이 내놓으신 차선책은 뷰의 순서를 바꾸는 겁니다.

그러나 이 또한 버튼이 위치한 곳은 하단의 핀치투줌뷰로 이벤트가 전달되지 않습니다.

해당기능은 뷰를 다르게 해서는 해결이 어려울 듯 보입니다.

다른 방향을 선택 하시는 것이 좋을 듯합니다.

물론 다른위젯들을 이리저리 이용하면 전혀 불가능 한것은 아니지만... 많은 시간과 많은 노력이 필요하며 혹여 하였다 하

더라도 많은 오류가 나올것으로 사료 됩니다.
ThisPlus (46,920 포인트) 님이 2014년 2월 11일 답변
...