背景 我的工作应用程序包含一个包含5行11列的GridView,并带有一个被覆盖的适配器用于显示。使用大型显示平板电脑可满足我的需求。
移植到小型智能手机后,由于体积小,我意识到网格无法使用。我决定使用缩放功能,而不是实现横向定位。
问题: 实现以下两个基本功能的最佳方法是:缩放(允许在100和400%之间缩放)和滚动(向上/向下/向右/向左)
答案 0 :(得分:2)
我的解决方案是创建一个布局重新计算例程,更改列数及其大小
可能有更好的方法,但没有回复,这是一个快速而肮脏的黑客行为
public void gvlpRecalc() {
m_gv.setNumColumns(m_Columns);
if ((btnWidth = (int) (m_gv.getWidth() / m_Columns + .5)) == 0) {
Display display = ((Activity) m_Context).getWindowManager().getDefaultDisplay();
btnWidth = (int) (display.getWidth() / m_Columns + .5);
switch (m_Columns) {
case 8:
btnHeight = (int) (btnWidth * .9);
break;
case 10:
btnHeight = (int) (btnWidth * 1.2);
break;
default:
btnHeight = btnWidth;
}
} else
switch (m_Columns) {
case 8:
btnHeight = (int) (btnWidth * .9);
break;
case 10:
btnHeight = (int) (btnWidth * 1.2);
break;
case 11:
btnHeight = btnWidth;
break;
default:
btnHeight = (int) (m_gv.getHeight() / 2.2);
}
gvlp = new GridView.LayoutParams(btnWidth, btnHeight);
}