Android ImageView 크기가 소스 이미지로 확장되지 않음
LinearLayout 안에 몇 가지 ImageView가 있습니다. LinearLayout 내부에 세로로 맞추는 동안 가로 세로 비율을 유지하도록 ImageView를 축소해야합니다. 수평으로, 나는 그것들이 서로 인접하기 만하면됩니다.
가중치가있는 레이아웃을 중첩하는 단순화 된 테스트 베드를 만들어 ImageViews에 대해 넓지 만 높지는 않은 LinearLayout-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="5">
<LinearLayout android:id="@+id/linearLayout3" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_weight="1">
<ImageView android:id="@+id/imageView1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/test_image" android:scaleType="fitStart"></ImageView>
<ImageView android:id="@+id/imageView2" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/test_image" android:scaleType="fitStart"></ImageView>
</LinearLayout>
<LinearLayout android:id="@+id/linearLayout4" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_weight="1"></LinearLayout>
</LinearLayout>
<LinearLayout android:id="@+id/linearLayout2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"></LinearLayout>
</LinearLayout>
(Eclipse 레이아웃 편집기에서 이미지는 수직으로 잘리고 전혀 크기가 조정되지 않습니다.하지만 이것은 우리가 좋아하는 특이점 중 하나 일뿐입니다)
하드웨어에서 실행할 때 이미지는 종횡비를 유지하면서 올바른 높이로 조정됩니다. 내 문제는 그들이 서로 옆에 있지 않다는 것입니다. 각 ImageView의 높이는 LinearLayout의 높이와 올바르게 일치합니다. 각 ImageView의 너비는 크기가 조정되지 않은 이미지의 너비입니다. ImageView의 왼쪽에 표시되는 실제 축소 된 이미지입니다. 이 때문에 이미지 사이에 큰 차이가 생깁니다.
이상적으로는 이것을 XML을 통해 관리하고 싶지만 이것이 가능하지 않은 경우 사용자 지정보기를 사용하는 것이 최상의 솔루션 일 수 있음을 이해합니다.
높이에 따라 너비를 조정하여 필요한 크기의 이미지보기를 만들 수 있도록 onMeasure를 재정의하는 IconView (ImageView 확장) 클래스를 만들려고했습니다. 그러나 함수에 전달되는 parentWidth 및 parentHeight는 LinearLayout 컨테이너가 아니라 화면의 크기였습니다.
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
// Calculations followed by calls to setMeasuredDimension, setLayoutParams
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
그래서 내 질문은-
1) 필요한 작업을 수행하도록 XML을 수정할 수 있습니까?
2) 사용자 정의 이미지에 필요한 너비를 계산할 수 있도록 사용자 정의 클래스가 LinearLayout의 높이를 가져 오도록하려면 어떻게해야합니까?
여기까지 읽어 주셔서 감사합니다. 해결책의 방향을 알려 주시면 더욱 감사합니다!
사용할 ImageView를 변경하는 것은 android:layout_height="fill_parent"
어떻습니까?
편집 -찾는 데 시간이 좀 걸렸지 만 소스를 보면 adjustViewBounds를 정확히 찾을 수있었습니다 . android:adjustViewBounds="true"
ImageView에 추가해 볼 수 있습니다 . 놀랍게도 기본값은 false입니다.
이상하게도 android:layout_height="fill_parent"
하고 android:adjustViewBounds="true"
도움이되지 않았다. 내가 가진 문제는 이미지가 표시되지만 상단에 블록 행이 있고 이미지 하단에 검은 행이 있다는 것입니다. "centerCrop"
나 에게 도움이 될 스케일 유형 설정 . 내 이미지 크기가 작기 때문이라고 생각합니다.
비슷한 문제가 있었고 해결책은 android:scaleType="fitEnd"
XML 레이아웃 파일에 ImageView의 속성 을 설정하는 것이 었습니다 .
참고 URL : https://stackoverflow.com/questions/5355130/android-imageview-size-not-scaling-with-source-image
'developer tip' 카테고리의 다른 글
UITableView : 빈 섹션에서 헤더 숨기기 (0) | 2020.10.25 |
---|---|
NSDate에 한 달을 추가하는 방법은 무엇입니까? (0) | 2020.10.25 |
텍스트 상자에 숫자 만 입력 할 수 있습니다. (0) | 2020.10.25 |
Ruby on Rails를 사용하여 날짜 형식 지정 (0) | 2020.10.25 |
터미널에서 작동하는 동안 스택 추적없이 "로컬 호스트의 서버 Tomcat v7.0 서버를 시작하지 못했습니다." (0) | 2020.10.25 |