검토:ScrollView 에 ListView 를 삽입 하 는 방법
4444 단어 ScrollView끼 워 넣다ListView
1.가장 간단 한 레이아웃:ListView 하나만 있 음
전체 페이지 에 ListView 가 하나 밖 에 없다 면 ListView 자체 가 스크롤 효 과 를 가지 고 있 기 때문에 불 러 온 데이터 가 페이지 에 표 시 된 범 위 를 초과 할 때 상하 미끄럼 을 통 해 모든 item 을 볼 수 있 습 니 다.따라서 이 경우 ScrollView 를 추가 할 필요 가 없다.
2.다른 레이아웃 A+ListView
이러한 상황 에서 만약 에 레이아웃 A 가 ListView 의 앞 에 정의 되면 레이아웃 A 가 차지 하 는 비례 가 크 거나 ListView 가 불 러 온 데이터 가 많 을 때 ListView 의 표시 가 불완전 하 게 나타 날 수 있 습 니 다.마찬가지 로 ListView 자체 가 스크롤 할 수 있 기 때문에 상하 스크롤 을 통 해 ListView 의 모든 item 을 볼 수 있 습 니 다.그림 에서 보 듯 이:
3.다른 레이아웃 B+ListView
이러한 상황 에서 레이아웃 B 가 ListView 의 뒤에 정의 된다 고 가정 하면 두 가지 상황 이 발생 한다.(1)ListView 가 불 러 온 데이터 가 많 지 않 고 ListView 의 모든 항목 을 완전히 표시 할 수 있다.그러면 뒤에 충분 한 공간 이 있다 면 레이아웃 B 는 정상적으로 표 시 될 수 있다.(2)、ListView 가 불 러 온 데 이 터 를 많이 추가 하면 레이아웃 B 에 남 겨 진 공간 이 부족 하거나 아예 없 거나 레이아웃 B 가 불완전 하거나 전혀 표시 되 지 않 습 니 다.어쨌든 ListView 자체 의 내용 은 미끄럼 을 통 해 볼 수 있다.
세 번 째 경우 레이아웃 을 다시 고려 하지 않 으 면 스크롤 뷰 를 추가 하여 남 은 페이지 의 내용 을 볼 수 있 도록 해 야 합 니 다.
2.ScrollView 와 ListView 의 충돌 문제
1.ListView 에 안 드 로 이 드:layot 를 설정 하 는 높이 를 지정 합 니 다.height="240 dip",그러면 해결 할 수 있 고 미관 에 영향 을 줄 수 있 습 니 다.그림 에서 보 듯 이:
2.밖 에 ScrollView 를 추가 하면 문제 가 생 길 수 있 습 니 다.그림 에서 보 듯 이:
3.ScrollView 에 속성 설정:android:fillViewport="true"테스트 를 할 때 ListView 에 불 러 온 데이터 가 많 지 않 으 면 해결 할 수 있 지만 ListView 에 불 러 온 데이터 가 많 을 때 완전히 표시 되 지 않 고 이 때 ListView 자체 도 스크롤 할 수 없습니다.3.해결 방법 은 두 가지 가 있 습 니 다.1.listview 의 총 높이 를 계산 하고 ListView listView=(ListView)findViewById(id)를 설정 합 니 다.Your Adapter adapter=new MyAdapter("어댑터 초기 화");listView.setAdapter(adapter);setListViewHeightBasedOnChildren(listView);(setAdapter 후 사용자 정의 방법 을 호출 합 니 다)
/**
* @param listView
*/
private void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}
이 방법 을 사용 하려 면 주의해 야 합 니 다.하위 ListView 의 모든 Item 은 LinearLayout 이 어야 합 니 다.다른 Layout(예 를 들 어 RelativeLayout)가 onMeasure()를 다시 쓰 지 않 았 기 때문에 onMeasure()에서 이상 을 던 집 니 다.2.ListView 를 사용자 정의 하고 onMeasure()방법 을 다시 불 러 옵 니 다.모든 디 스 플레이
package com.meiya.ui;
import android.widget.ListView;
/**
*
* @Description: scrollview listview
*
* @File: ScrollViewWithListView.java
*
* @Paceage com.meiya.ui
*
*
* @Date 03:02:38
*
* @Version
*/
public class ScrollViewWithListView extends ListView {
public ScrollViewWithListView(android.content.Context context,
android.util.AttributeSet attrs) {
super(context, attrs);
}
/**
* Integer.MAX_VALUE >> 2, ,
*/
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
이상 설정 하면 scrollView 에 listView 가 내장 되 어 있 는 listView 를 해결 할 수 있 습 니 다.그러나 첫 번 째 문 제 는 화면 에 들 어 갈 때 listview 의 items 를 동적 으로 불 러 온 후에 페이지 가 listview 의 첫 번 째 키 항목 으로 넘 어 가 는 것 입 니 다.이것 은 매우 아 프 고 어 쩔 수 없 이 어떻게 해결 해 야 할 지 모 르 겠 습 니 다.먼저
scrollView.post(new Runnable() {
// scrollview , runnable()
@Override
public void run() {
scrollView.scrollTo(0, 0);
}
});
이 방법 으로 과도아 는 사람 이 있 으 면 솔 루 션 3,scrollView+LinearLayout 를 사용 하여 addView()방법 으로 목록 을 추가 하 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
스크롤하면 이미지가 확대되는 녀석~(※이 기사는, storyboard에 스크롤 뷰를 붙이는 기초 지식이 있는 사람을 전제로 하고 있습니다.) 이번에는 스크롤 뷰를 위로 스크롤하면(아래로 당기면) 이미지(헤더 이미지)가 확대되는 녀석을 구현하고 싶습니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.