我使用HorizontalListView
提供here,我試圖以顯示與一個固定的高度和寬度自定義視圖,就像這樣:固定的高度不顯示正確的高度
public class MyView extends View {
public MyView(Context context) {
super(context);
init();
}
private void init() {
setBackgroundColor((int) (Math.random() * Integer.MAX_VALUE));
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
int h = getHeight(); // shows 255, correct height
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int w = MeasureSpec.makeMeasureSpec(425, MeasureSpec.EXACTLY);
int h = MeasureSpec.makeMeasureSpec(255, MeasureSpec.EXACTLY);
super.onMeasure(w, h);
}
}
顯示當這MyView
在一個正常的LinearLayout
,高度和寬度都是完美的。但是,當我在HorizontalListView
中展示視圖時,寬度是完美的,但高度不是。看到此屏幕截圖:
寬度425px,這是正確的,該高度是僅有160像素,而不是255。
在HorizontalListView
的源有此方法:
private void addAndMeasureChild(final View child, int viewPos) {
LayoutParams params = child.getLayoutParams();
if(params == null) {
params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
}
addViewInLayout(child, viewPos, params, true);
child.measure(MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.AT_MOST),
MeasureSpec.makeMeasureSpec(getHeight(), MeasureSpec.AT_MOST));
}
有什麼我應該改變這種方法,還是有什麼其他的東西使這項工作?
您能向我們展示您定義HorizontalListView高度的位置嗎? – dmon
我在xml中定義了一個200dp的值。黑色的橫幅是'HorizontalListView'的背景。 – nhaarman
說那..我有一個透明的操作欄,因此我使用'android:paddingTop =「63dp」'和'android:paddingBottom =「15dp」'。當刪除這兩條線的項目的高度是正確的。謝謝你讓我看着正確的方向! – nhaarman