我正在根据屏幕方向为我的自定义 ListView 项目设置不同的高度,如下面的代码我监听屏幕方向的变化,并根据它设置一个全局值,当 getView(...) 被调用时在 ListView 项目上,我设置了转换后 View 的高度。
我的问题是,还有比这更好的解决方案吗?
这种方法对 UI 加载速度过程的影响有多大?
我的目标是 API14+
P.S: 下面的 (200 & 300) 是作为示例添加在这里的,它们在运行时不固定,它们在运行时根据屏幕 dpi 发生变化。
int mConvertViewHeight;
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
mConvertViewHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200, getResources().getDisplayMetrics());
}
else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{
mConvertViewHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300, getResources().getDisplayMetrics());
}
}
在我的 ListView 自定义数组适配器中
@Override
public View getView(final int aConvertViewPosition, View aConvertView, ViewGroup parent)
{
mParams = aConvertView.getLayoutParams();
mParams.height = mMainActivity.mConvertViewHeight;
}
最佳答案
如果您只需要纵向/横向模式下的不同项目 View ,您可以在 layout-land 和 layout-port 文件夹中创建不同的布局
关于Android:我可以在 getView() 中设置转换后的 View 布局吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30258410/