我希望调整 ListView 中的行的大小,以便其中的 6 行正好适合屏幕。为此,我需要知道 ListView(而不是整个屏幕)有多少垂直空间可用。但是,由于尚未呈现任何 View ,因此无法在 onCreate() 中进行任何测量。
如果我在渲染后进行测量,ListView 可能会被绘制然后调整大小,这可能会分散注意力。在呈现 ListView 之前建立必要的行高的最聪明的方法是什么?
最佳答案
在 onCreate
中,您可以获得屏幕的高度并除以 6。
现在,在您的 getView
中,您获得了每个项目的顶部布局的引用,假设您已将其命名为 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 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27528674/