android – 如何在屏幕上显示确切数量的ListView项?

我希望ListView中的行的大小,以便它们中的六个可以适合屏幕.为此,我需要知道ListView(而不是整个屏幕)有多少垂直空间可用.但是,由于尚未呈现视图,因此无法在onCreate()中进行测量.

如果我在渲染后进行测量,可能会绘制ListView然后调整大小,这可能会分散注意力.在呈现ListView之前建立必要行高的最明智的方法是什么?

最佳答案
在onCreate中,您可以获得屏幕的高度并除以6.
现在在你的getView中你得到每个项目的顶部布局的引用,假设你已经将它的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;

转载注明原文:android – 如何在屏幕上显示确切数量的ListView项? - 代码日志