0

我发现了一个让我很头疼的 Android 错误。

清单上的活动:

<activity
        android:name=".ActivityTest"
        android:configChanges="orientation"
        android:label="@string/app_name" />

布局:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="TEST" />

<SlidingDrawer
    android:id="@+id/drawer"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:content="@+id/content"
    android:handle="@+id/handle"
    android:orientation="vertical" >

    <ImageView
        android:id="@id/handle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <LinearLayout
        android:id="@id/content"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <Button
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="Big Big Button" />
    </LinearLayout>
</SlidingDrawer>

现在..抓住抽屉的把手,将其移到中间并在旋转设备的同时保持手指...

抽屉尺寸都被拧紧了……直到它完全打开。

纵向抽屉关闭 抽屉半纵向打开 旋转到横向后的抽屉没有调整大小(手指仍然按下)

有人知道如何解决它吗?我正在尝试查看 SlidingDrawer 打开代码以检查为什么打开时它会正常……但还没有运气。

不自己处理轮换不是我现在愿意选择的选项...

4

2 回答 2

0

我从来没有使用过滑动抽屉,所以我只是想在这里提出一个想法,也许它会粘在墙上。

如果每当调用 onConfiguration 时,您会获得屏幕的宽度并将滑动抽屉的 layout_width 设置为该值怎么办?看起来当您中途停止并旋转屏幕时,宽度(旋转后)与旋转前的宽度相同。也许如果您明确设置宽度,它将正确扩展。

于 2012-05-03T14:41:28.633 回答
0

好的,设法用一些技巧修复它......触摸事件有时在抽屉半打开后旋转后无法到达视图......

首先我扩展了抽屉,然后:在一些方法中添加了一些代码:

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b)
{
    if (mTracking && !rotationStopTracking)
    {
        return;
    }
    else if (rotationStopTracking)
    {
        rotationStopTracking = false;
         if (isMoving())
        {
            animateOpen();
            close();
        }else{
            animateOpen();
        }
    }

    ...

   }


//Called from Activity onConfigurationChanged
public void enableRotationResize()
{
    if (mTracking)
    {
        mTracking = false;
        rotationStopTracking = true;
    }
}
于 2012-05-04T10:29:01.547 回答