Android ScrollView에 사용자 정의 View 추가
5001 단어 안드로이드 베이스
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:customerview="http://schemas.android.com/apk/res/com.rising.customivew"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<com.rising.view.RectProgressView
android:id="@+id/rect_progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
여러 차례의 테스트를 통해 안에 사용자 정의view가 계속 표시되지 않는 것을 발견했고 마지막 디버깅은 원인을 찾았습니다. 원래는 onMeasure 방법의 높이가 줄곧 0이었습니다.
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
int widthSpecMode = MeasureSpec.getMode(widthMeasureSpec);
int widthSpecSize = MeasureSpec.getSize(widthMeasureSpec);
int heightSpecMode = MeasureSpec.getMode(heightMeasureSpec);
int heightSpecSize = MeasureSpec.getSize(heightMeasureSpec);
if (widthSpecMode == MeasureSpec.EXACTLY || widthSpecMode == MeasureSpec.AT_MOST) {
mWidth = widthSpecSize;
} else {
mWidth = 0;
}
if (heightSpecMode == MeasureSpec.AT_MOST || heightSpecMode == MeasureSpec.UNSPECIFIED) {
mHeight = dipToPx(30);//
} else {
mHeight = heightSpecSize;
}
setMeasuredDimension(mWidth, mHeight);
}
원인은 다음과 같다.scrollview가 초기화할 때 사용자 정의View의 높이가 확실하지 않아서view를 그릴 수 없기 때문에view는 표시되지 않는다. 해결 방법은onmeasure 방법에 고정된 크기를 설정하는 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Dialog 팝업 상자(보통 가운데에서 팝업 및 아래쪽 애니메이션에서 팝업)텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.