위 와 같이 ScrollView 안에 여러 라인의 TextView나 EditText를 넣었을 경우,
ScrollView가 최상위 View 이므로 EditText와 TextView에 적용 되는 Scroll이 먹히지 않습니다.
만약 TextView나 EditText가 고정 사이즈일 경우 화면을 넘어간 문자열은
볼수가 없는 상황이 되는 것이죠.
그럼 이럴 때는 어떻게 하느냐~ 아래 소스 처럼 하면 됩니다.
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".NestedScrollViewActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:focusable="true" android:focusableInTouchMode="true" android:orientation="vertical"> <requestFocus/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="16dp" android:layout_marginTop="16dp" android:paddingLeft="16dp" android:paddingRight="16dp" android:text="@string/long_message" android:textSize="20sp"/> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="160dp" android:layout_margin="16dp" android:background="@drawable/edit_text_background" android:clipToPadding="false" android:paddingBottom="16dp" android:paddingLeft="4dp" android:paddingRight="4dp" android:paddingTop="16dp"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@null" android:gravity="top" android:inputType="textMultiLine" android:minHeight="128dp" android:text="@string/long_message"/> </android.support.v4.widget.NestedScrollView> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="16dp" android:paddingRight="16dp" android:text="@string/long_message" android:textSize="20sp"/> </LinearLayout> </android.support.v4.widget.NestedScrollView> </layout>
출처 : http://qiita.com/noboru_i/items/09e7d3f8f222834378cc
[ NestedScrollView [LinearLayout [ NestedScrollView [ Edittext나 TextView
그리고 두번째 NestedScrollView에 android:clipToPadding을 false로 주게 되면
EditText나 TextView의 scroll이 끝났을 경우,
두번째 NestedScroll로 넘어가게 됩니다.
두번째 NestedScroll도 끝났을 경우 자동으로 최상위 NestedScrollView로 넘어가게 되구요.
이렇게 해서 좀 더 자연스럽게 UI를 구현 할 수가 있습니다.
여기서!! 잠깐
최상위 NestedScrollView를 그냥 ScrollView로 하면 안되나???
제가 테스트 해본 결과, Kitkat 버전보다 낮을 경우 두번째 NestedScrollView에서 부터
스크롤이 먹히지 않습니다.
다른 말로는 Lollipop 이후 버전에서는 동작이 또 됩니다.
그래서 그냥 둘다 NestedScrollView를 사용 하도록 하세요.
그럼 참고하세요.
'나의 플랫폼 > 안드로이드' 카테고리의 다른 글
[Android] LinearLayout 에서 layout_weight를 사용할 때 (0) | 2016.11.18 |
---|---|
[Android] Edittext, TextView 에서 singline deprecated (1) | 2016.11.18 |
[Android] 현재 Android 최신 버전 상태 (2016.10.25) (6) | 2016.10.26 |
[Android] Intent.FLAG_ACTIVITY_NO_HISTORY (0) | 2016.10.21 |
[Android] TextView가 Ellipis 상태인지 체크 하는 방법 (0) | 2016.10.19 |