안녕하세요.
스크롤뷰로 감싸면 리스트뷰가 스크롤이 안됩니다.
스크롤뷰를 빼자니, 에디트텍스트 터치시 키보드가 올라오면서 에디트텍스트가 안보입니다.......
리스트뷰에 어떤속성을 주거나, 키보드에 어떤설정을 하면 해결이 가능한가요?
좋은하루 되시구요, 답변 부탁 드리겠습니다.
감사합니다.
아래의 그림은 스크롤뷰를 감싸지 않았습니다.
스크롤뷰가 없으면 위의 에디트텍스트 클릭시 키보드가 올라오면서 에디트텍스트가 가려지네요....
아래의 그림은 스크롤뷰를 감싸았구요......
스크롤뷰로 감싸면 키보드가 올라올때 에디트텍스트가 보입니다.
그런데 리스트뷰 스크롤이 안됩니다. T,.T
소스입니다.
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:layout_marginTop="15dp"
android:gravity="center"
android:orientation="horizontal" >
<EditText
android:id="@+id/main_editSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/edit_search"
android:hint="@string/main_search_hint"
android:maxLines="1"
android:paddingLeft="10dp"
android:textColor="@color/color_gray_search_hint"
android:textSize="@dimen/dimens_brand_content"
android:textStyle="bold" />
<ImageButton
android:id="@+id/main_btnSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:background="@null"
android:onClick="mOnClick"
android:src="@drawable/btn_search" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="200dp"
android:background="@drawable/main_search_right_bg"
android:orientation="horizontal" >
<ListView
android:id="@+id/main_searchListSi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="6"
android:dividerHeight="0px" />
<ListView
android:id="@+id/main_searchListGugun"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="4"
android:dividerHeight="0px" />
</LinearLayout>
<ImageButton
android:id="@+id/main_btnLocSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="@null"
android:onClick="mOnClick"
android:src="@drawable/btn_main_search_ok" />
</LinearLayout>
</ScrollView>
리스트뷰를 스크롤뷰 안에 넣으시면 리스트뷰가 스크롤되지 않습니다.
뭔가 꼼수를 이용해서 가능할것도 같지만 추천할 만한 방법은 아닌것 같구요.
매니페스트 에서 해당 엑티비티에 android:windowSoftInputMode 를 이용해서 조정해 보세요.
보통 adjustPan이나 adjustResize로 해결이 가능한데 이외에도 몇가지가 더 있으니 상황에 맞는걸로 이용해보시길.
음 포커스가 리스트 뷰쪽으로 안가서그런거 같은데요.. 호리즌탈에서 android:layout_weight 옵션을쓰실떄는 width를 0dp로 주셔야합니다.
자세한건 잘 몰르겟지만 포커스가 안가서 그런거 같네요.. 그 답변은 아랫분이 ㅡㅡ;
리스트뷰에는 header와 footer에 View객체를 삽입할 수 있습니다. EditText부분을 별도의 레이아웃 파일로 만든 다음 inflate해와서 View 객체로 만들어 주고 Header로 삽입하신다면 굳이 스크롤뷰로 감싸실 필요도 없습니다. 다만, 이렇게 사용하실 때에 이슈사항이 하나 있는데
onItemClickListner를 쓴다면 param중 리스트뷰의 포지션 값이 header삽입으로 인해 +1 씩 증가한다는 것입니다. onItemClick을 리스트뷰에 직접 쓰신다면 이부분만 유념하시면 될겁니다. adapter의 getView에서 onClick으로 클릭이벤트를 구현하신다면 header는 getView에서 구현하는 것이 아니므로 정상적으로 position값을 사용하실 수 있습니다.
이렇게 사용하시면 EditText부분도 함께 스크롤 되구요, 키보드 문제는 adjustResize를 사용하시는걸 추천하고 싶네요
<스크롤뷰>
<또다른 스크롤 대상>
</스크롤뷰>
일때 스크롤 대상과 스크롤뷰 터치 이벤트를 각각 처리할 수 있는데요
스크롤뷰 대상이 터치를 받으면 아래와 같이 터치를 잡아주세요
public boolean onTouch(View v, MotionEvent event) {
// Log.d("Parsing", v.toString()+"\tonTouch");
if(event.getAction() == MotionEvent.ACTION_UP){
//웹뷰 스크롤 끝나면 스크롤 간섭 허가
scrollView.requestDisallowInterceptTouchEvent(false);
}else{
//웹뷰 스크롤 중에는 스크롤뷰 간섭 x
scrollView.requestDisallowInterceptTouchEvent(true);
}
return false;
}
위 코드는 <스크롤뷰><웹뷰></스크롤뷰> 일때 제가 짠 코드입니다 ^^
좀 예전에 있던 버그인데
스크롤뷰 안에 리스트뷰 넣으면
일부 단말기에서 크기가 제대로 나오지 않더라구요.
(아이템 1개 크기 정도로 나옴)
이거 고쳐 졌는지 모르겠네요.
진저에서 스크롤뷰 안에 리스트뷰 넣으려고 하다가
이것때문에 좌절한 적이 있네요.



