我在LinearLayout中有幾個ImageView。我需要縮小ImageView,以便在垂直嵌入LinearLayout的同時保持縱橫比。水平地,我只是需要他們彼此相鄰。Android ImageView大小與源圖像無法縮放
我做了一個簡單的測試牀,這裏面嵌套加權佈局,使我有一個廣泛的,但個子不是很高,LinearLayout中的ImageViews -
<?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的寬度是未縮放圖像的寬度 - 實際縮小的圖像出現在ImageViews的左側。正因爲如此,我在圖像之間出現了很大的差距。
理想情況下,我想通過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幾乎是圖像本身的兩倍,阻止了寶貴的屏幕空間。感謝addding'android:adjustViewBounds =「true」'將高度調整爲圖像 – dave 2011-07-08 12:57:16
@dave默認情況下,android :: adjustViewBounds沒有設置爲true。我很高興你的問題現在被排序。 – Rok 2011-07-09 07:57:52
謝謝你的男人!給我的老闆保存了一些棒! – 2015-12-11 15:22:51