是否可以使用UICollectionView
构建布局,其中每个部分可以独立滚动?例如,想象20行图像,其中每行可以水平独立滚动以在屏幕外显示更多图像(在此过程中不滚动其他行); 并且整个视图可以垂直滚动以显示更多行.
我相信这样的事情可以用UIScrollView中的几个UICollectionView实例来实现; 但是,利用UICollectionView插入/移动部分会很棒.
我怀疑这是不实际的,因为UICollectionView是UIScrollView的子类; 但也许这可以通过自定义UICollectionViewLayout完成?
我注意到,当从一个Activity处理配置更改时,onLayout和onSizeChanged会在方向更改后立即连续调用两次,无论是从landscape-> portrait还是从portrait-> landscape.此外,第一个onLayout/onSizeChanged包含旧维度(在旋转之前),而第二个onLayout/onSizeChanged包含新(正确)维度.
有谁知道为什么,和/或如何解决这个问题?似乎在配置更改后很长一段时间内屏幕尺寸发生了变化 - 也就是说,在onConfigurationChanged
调用配置更改后立即尺寸不正确?
这是下面代码的调试输出,显示从Portrait到Landscape旋转后的onLayout/onSizeChanged调用(请注意,设备为540x960,因此横向宽度应为960,纵向宽度为540):
03-13 17:36:21.140: DEBUG/RotateTest(27765): onConfigurationChanged: LANDSCAPE
03-13 17:36:21.169: DEBUG/RotateTest(27765): onSizeChanged:540,884,0,0
03-13 17:36:21.189: DEBUG/RotateTest(27765): onLayout:true-0,0,540,884
03-13 17:36:21.239: DEBUG/RotateTest(27765): onSizeChanged:960,464,540,884
03-13 17:36:21.259: DEBUG/RotateTest(27765): onLayout:true-0,0,960,464
Run Code Online (Sandbox Code Playgroud)
另请注意,第一个onSizeChanged oldwidth和oldheight为0,表示我们刚刚添加到视图层次结构中 - 但是景观的尺寸错误!
以下是说明此行为的代码:
package com.example;
import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.widget.FrameLayout;
public class MyActivity extends Activity
{
private static String TAG = "RotateTest";
@Override
public void onConfigurationChanged(Configuration newConfig) {
Log.d(TAG, "onConfigurationChanged: " + (newConfig.orientation == …
Run Code Online (Sandbox Code Playgroud) android android-layout android-configchanges android-orientation