sri*_*lli 15 android gridview android-layout
我想以网格的形式显示6个图像,如下所示.
纵向,2个coumns,3行,并在土地保育方向3列,2行
通过使用Android GridView并在layout-port和layout-land目录中定义不同的网格布局,我能够实现这种效果.
后来根据我的活动要求,我在manifest.xml中添加了一个参数
android:configChanges = "mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|fontScale|screenSize"`
Run Code Online (Sandbox Code Playgroud)
一旦屏幕方向改变,停止我的活动重新创建.
添加此参数后,我的网格视图不按预期方式运行.它有时显示1列,有时2列,有时3列.
我根据设备的方向在我的网格适配器的get view方法中放置gridView.setNumberOfColumns(2)
或gridView.setNumberOfColumns(3)
方法.
请帮助我在不删除android:configChanges
Manifest.xml中的参数的情况下实现此效果
urS*_*Sus 38
使用强大的资源系统.
在xml布局中,将列数设置为整数资源,然后/values/integers.xml
将其设置为2表示纵向,/values-land/integers.xml
并将其设置为3表示横向
//好吧,如果你在清单中执行configChanges,则必须在onConfogurationChanged中更改java中的列数
Jin*_*n35 11
@Override
public void onConfigurationChanged(Configuration newConfig) {
grid.setNumColumns(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ? 3 : 2);
super.onConfigurationChanged(newConfig);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用编程方式设置列数
float scalefactor = getResources().getDisplayMetrics().density * 100;
int number = getWindowManager().getDefaultDisplay().getWidth();
int columns = (int) ((float) number / (float) scalefactor);
gridView.setNumColumns(columns);
Run Code Online (Sandbox Code Playgroud)
当您在清单中使用 android:configChanges = "orientation" 时,您的活动不会在方向更改时重新创建(横向到纵向或反之亦然)。如果您不想从清单中删除此标记,则必须重写 onConfigchanged 并在那里放置一些代码逻辑。
归档时间: |
|
查看次数: |
33692 次 |
最近记录: |