我有一个horizontal list
,每个列表项都有一个背景填充视图
应该是listview中另一个视图(bottleoverlay)高度的一定百分比。
一切正常,但我无法使用getHeight()
找到瓶盖视图的高度
如this question所述。
我已经尝试按照建议使用onGlobalLayout侦听器,但无论设置layoutparams.height
是否有更简单的方法,bottleheightoverlay
对于列表中的每个项目都是相同的。
public class ImageAdapter extends BaseAdapter {
// varible declaration...
// getView that displays the data at the specified position in the data set.
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
......
......
//increase height of filler
int bottleHeight = gridView.findViewById(R.id.bottleoverlay).getHeight();
FrameLayout backgroundfill = (FrameLayout) gridView.findViewById(R.id.backroundfillbar);
double percent = products.get(position).value/ products.get(0).value;
backgroundfill.getLayoutParams().height = (int) ( (bottleHeight/percent));
答案 0 :(得分:0)
我使用globallayout监听器工作了 这是我的imageAdapter
if(!heightSet ){
final LinearLayout tv = (LinearLayout) gridView.findViewById(R.id.bottleover);
ViewTreeObserver vto = tv.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
bottleheight = tv.getHeight();
heightSet = true;
System.out.println("bottle hiegiht " + bottleheight);
//turn off listenter
ViewTreeObserver obs = tv.getViewTreeObserver();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
obs.removeOnGlobalLayoutListener(this);
} else {
obs.removeGlobalOnLayoutListener(this);
}
}
});
}