LinearLayout 안에 몇 개의 ImageView가 있습니다. LinearLayout 내부에 세로로 맞추는 동시에 가로 세로 비율을 유지할 수 있도록 ImageView를 축소해야합니다. 가로로, 나는 그들이 서로에 인접 해있을 필요가있다.Android 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>
이클립스 레이아웃 편집기에서 (이미지 수직으로 잘려서 크기가 조정되지는 않지만, 우리가 사랑하는 법을 배우는 특질 중 하나 일뿐입니다.)
하드웨어에서 실행하면 이미지의 가로 세로 비율은 유지하면서 올바른 높이로 조정됩니다. 내 문제는 그들이 서로 옆에 있지 않다는 것이다. 각 ImageView의 높이가 LinearLayout 높이와 정확하게 일치합니다. 각 ImageView의 너비는 크기 조정되지 않은 이미지의 너비입니다. 즉, 축소 된 이미지가 ImageViews의 왼쪽에 나타나는 것입니다. 이 때문에 이미지간에 큰 차이가납니다.
이상적으로 XML을 통해 관리하고 싶습니다. 가능하지 않은 경우 사용자 지정보기를 사용하는 것이 가장 좋은 방법 일 수 있음을 이해합니다.
높이에 따라 너비를 조정하여 필요한 크기의 이미지보기를 만들 수 있도록 onMeasure를 재정의하는 IconView (이미지 뷰 확장) 클래스를 만들려고했습니다. 그러나 함수에 전달 된 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 : adjustViewBounds = "true"'이미지를 높이 조절 한 덕분에 – dave
@dave'android :: adjustViewBounds'는 기본적으로 true로 설정되지 않습니다. 네 문제가 지금 기쁘다. – Rok
감사합니다. 내 상사 한테서 저를 구해 줬어요! –