我有一排View
,我在ListView
中使用。Android ImageView - 填充寬度和調整大小以保持長寬比
RowView
這由在左邊的ImageView
和在水平LinearLayout
其中圖像被給予的空間和文本剩餘的60%的40%在右側TextView
的。
我想要的佈局來處理圖像在ImageView
調整大小以下列方式:水平
- 伸展圖像,使其填滿的
LinearLayout
- 給予40%調整的
ImageView
垂直保持原有的縱橫比
這是我的方法來佈局:
protected class RowView extends LinearLayout {
public ImageView iv = null;
public TextView tv = null;
private LinearLayout.LayoutParams ivlp = null;
private LinearLayout.LayoutParams tvlp = null;
public RowView(Context ct) {
super(ct);
setOrientation(LinearLayout.HORIZONTAL);
// Create the views
iv = new ImageView(ct);
ivlp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 0.4f);
iv.setLayoutParams(ivlp);
iv.setAdjustViewBounds(true);
iv.setScaleType(ScaleType.FIT_XY);
tv = new TextView(ct);
tvlp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 0.4f);
tv.setLayoutParams(tvlp);
tv.setGravity(Gravity.CENTER_VERTICAL | Gravity.RIGHT);
// Add the views
addView(iv);
addView(tv);
}
}
我得到的結果是這樣的:
從我的理解:
- 的
MATCH_PARENT
正確迫使圖像水平拉伸填滿40%的空間 ImageView.setAdjustViewBounds(true)
應該允許任何調整大小的ImageView
這是必要的,這是我想要的。問題是沒有一個ImageView.ScaleType
似乎做我想要的ImageView.ScaleType(ScaleType.FIT_XY)
是不是我想要的,因爲它不保持縱橫比。但所有其他人都這麼做,似乎並沒有拉高ImageView
(這使得ImageView.setAdjustViewBounds(true)
幾乎沒用)。
我在做什麼錯?這種簡單的事情可能如此困難似乎是錯誤的?
還是我實際上不得不努力擴展ImageView
和覆蓋onMeasure
來強制調整大小和縱橫比?
還是有一個巧妙的把戲Matrix
完成工作?
這種反應是爲我工作:http://stackoverflow.com/a/12283909/888245 – OriolJ
檢查接受的答案:HTTP://堆棧溢出。COM /問題/ 18077325 /縮放圖像來一補-imageview的寬度並保持的縱橫比 它爲我工作。 – StarDust