에이치의 모바일 앱 개발
ScrollView 본문
1. ScrollView안에 ListView 크기 설정
<Linearlayout~~~
<ListView
android:id="@+id/citylistview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Animation.AppCompat.DropDownUp"
android:dividerHeight="0.0dip"
android:typeface="monospace"
android:scrollingCache="false"
android:fadingEdge="none"
>
</ListView>
int totalHeight = 0;
for (int i = 0; i <adapter.getCount(); i++) {
View listItem = adapter.getView(i, null, listview);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listview.getLayoutParams();
params.height = totalHeight + (listview.getDividerHeight() * (adapter.getCount() - 1));
((ViewGroup.MarginLayoutParams) params).setMargins(10, 10, 10, 10);
listview.setLayoutParams(params);
2. ScrollView 갱신
private ScrollView mScrollView;
//호출하면 스크롤뷰의 레이아웃이 재설정됨.
mScrollView.invalidate();
mScrollView.requestLayout();
}
EX)
@Override
public void afterTextChanged(Editable s) {
mScrollView.invalidate();
mScrollView.requestLayout();
}
다음의 메소드로도 설정이 가능하다.
setOnScrollListener
3. 특정 위치로 스크롤 바 이동
/**
* ex) last position
**/
private void scrollbarMove() {
final View viewSize = mAdapter.getView(0, null, listView);
viewSize.measure(0, 0);
Log.e("Listview get focus", String.valueOf(lastPoint) + ", " + viewSize.getMeasuredHeight());
scroll.post(new Runnable() {
public void run() {
scroll.scrollTo(0, lastPoint * viewSize.getMeasuredHeight());
}
}); 마지막 지점
4. ScrollView 로 ListView 를 두개 잡고 있을 경우 커서 가져오기
private View.OnTouchListener mListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
timeTableScroll.requestDisallowInterceptTouchEvent(true);
return false;
}
};
5. ScrollView 위에 잔상이 남을 시
public void computeScroll() {
super.computeScroll();requestLayout();
}
'Android > Android 개발 소스' 카테고리의 다른 글
Android 개발 패턴 MVC, MVP, MVVP (0) | 2018.04.01 |
---|---|
NumberFormat 숫자->금액 (0) | 2017.12.23 |
DB 필터 기능 - 특정 단어 추출 (0) | 2017.12.23 |
애니메이션 추가 (0) | 2017.12.23 |
permission 자바 소스 코드에서 설정 (0) | 2017.12.23 |