带滑动抽屉的Nexus 7布局问题

时间:2012-10-16 16:13:48

标签: android android-layout slidingdrawer nexus-7

现在,在我的应用程序中,我在屏幕右侧有一个滑动抽屉,用户可以向左拉动以查看更多详细信息。问题在于滑动抽屉的“把手”。在所有设备上它看起来很棒并且应该在哪里。但是,在Nexus 7上,右侧有额外的空间。

The brown space shouldn't be there int he middle

这是我的布局代码。请帮助确定为什么Nexus 7与众不同。感谢。

 <com.app.android.apps.app.views.DragContentSlidingDrawer
                   android:id="@+id/drawer"
                   android:layout_width="match_parent"
                   android:layout_height="fill_parent"
                   ancestry:orientation="horizontal"
                   android:layout_alignParentRight="true"
                   ancestry:handle="@+id/panel_slider2"
                   ancestry:content="@+id/panel_frame"
                   ancestry:allowSingleTap="false" >

    <ImageView android:layout_width="wrap_content"
               android:layout_height="fill_parent"
               android:id="@+id/panel_slider2"
               android:src="@drawable/panel_handle"
               android:scaleType="fitXY"
               android:layout_alignParentRight="true"

            />


    <RelativeLayout android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:gravity="right"
                    android:id="@+id/panel_frame">

        <LinearLayout android:layout_width="fill_parent"
                      android:layout_height="fill_parent"
                      android:gravity="right"
                      android:layout_alignParentBottom="true"
                      android:layout_alignParentRight="true"
                      android:id="@+id/panel_layout">

            <FrameLayout android:layout_height="fill_parent"
                         android:layout_width="fill_parent"
                         android:id="@+id/panel_layout_holder"
                         android:background="@color/background"/>

        </LinearLayout>

    </RelativeLayout>

</com.app.android.apps.app.views.DragContentSlidingDrawer>

2 个答案:

答案 0 :(得分:1)

看起来我没有足够的帖子来解决这个问题。绘制句柄的代码是“Viewgroup”中“dispatchDraw”的重写方法。为了解决这个问题,在那个方法中,我检测了句柄位置并使用下面的代码修复它。

 if (mHandle.getLeft() == 0) {
        handle.offsetLeftAndRight(10);
    }

为什么这只会发生在Nexus 7上仍然没有多大意义,但最终解决了这个问题。

答案 1 :(得分:1)

您似乎错误地使用了XML代码。请尝试以下更正:

<com.app.android.apps.app.views.DragContentSlidingDrawer
                   android:id="@+id/drawer"
                   android:layout_width="**fill_parent**"
                   android:layout_height="fill_parent"
                   ancestry:orientation="horizontal"
                   android:layout_alignParentRight="true"
                   ancestry:handle="@+id/panel_slider2"
                   ancestry:content="@+id/panel_frame"
                   ancestry:allowSingleTap="false" >