我希望listview中的行大小合适,以便正好有六行可以放在屏幕上。为此,我需要知道listview(而不是整个屏幕)有多少垂直空间可用。但是,由于尚未呈现视图,因此无法在oncreate()中进行测量。
如果在渲染之后进行测量,则可能会绘制列表视图,然后调整其大小,这可能会分散注意力。在呈现listview之前,建立必要行高的最聪明的方法是什么?

最佳答案

onCreate中,您可以得到屏幕的高度并除以6。
现在在您的getView中,您将获得每个项目的顶部布局的引用,suppost您将其id命名为root,即它是一个LinearLayout

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View view = convertView;
    if(view == null){ some inflate }

    LinearLayout root = (LinearLayout) view.findViewById(R.id.root);
    LayoutParams lp = root.getLayoutParams();
    lp.height = screenHeight/6;
    root.setLayoutParams(lp);

    ....

    return view;
}

是的,这假设ListView是全屏的。
如果你有其他的布局,你必须考虑到这些高度。
那么你的身高是:int heightForEachItem = (screenHeight - otherlayoutsHeightTogether) / 6;

07-25 22:20
查看更多