Android 4.4 SlideDrawer句柄消失

时间:2014-04-01 03:49:15

标签: android

图片

  

enter image description here

     

enter image description here

当手柄拉下时,手柄会消失!

仅在版本4.4中出现此问题!

版本4.0~4.3 OK!

怎么解决?

PS:最初的Android SlideDrawer也有同样的问题!

守则!

布局!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#e0e0e0" >

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

</LinearLayout>

 <ImageButton
    android:id="@+id/gl_auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:background="@drawable/button_style"
    android:src="@drawable/auto_rotate" />


 <ImageButton
    android:id="@+id/gl_reset"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:background="@drawable/button_style"
    android:src="@drawable/reset" />


<com.example.aec3d.WrappingSlidingDrawer   
    android:id="@+id/slidingDrawer"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:handle="@+id/handle"
    android:content="@+id/content"
    android:allowSingleTap="true"
    android:animateOnClick="true"
    android:layout_alignParentBottom="true" >

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

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

    <TextView
        android:id="@+id/textView_price"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#000000"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/textView_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textColor="#000000" />

    </LinearLayout>


</com.example.aec3d.WrappingSlidingDrawer>

SlideDrawer

public class WrappingSlidingDrawer extends SlidingDrawer {

public WrappingSlidingDrawer(Context context, AttributeSet attrs,
        int defStyle) {
    super(context, attrs, defStyle);

    int orientation = attrs.getAttributeIntValue("android", "orientation",
            ORIENTATION_VERTICAL);
    mTopOffset = attrs.getAttributeIntValue("android", "topOffset", 0);
    mVertical = (orientation == SlidingDrawer.ORIENTATION_VERTICAL);
}

public WrappingSlidingDrawer(Context context, AttributeSet attrs) {
    super(context, attrs);

    int orientation = attrs.getAttributeIntValue("android", "orientation",
            ORIENTATION_VERTICAL);
    mTopOffset = attrs.getAttributeIntValue("android", "topOffset", 0);
    mVertical = (orientation == SlidingDrawer.ORIENTATION_VERTICAL);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    int widthSpecMode = MeasureSpec.getMode(widthMeasureSpec);
    int widthSpecSize = MeasureSpec.getSize(widthMeasureSpec);

    int heightSpecMode = MeasureSpec.getMode(heightMeasureSpec);
    int heightSpecSize = MeasureSpec.getSize(heightMeasureSpec);

    if (widthSpecMode == MeasureSpec.UNSPECIFIED
            || heightSpecMode == MeasureSpec.UNSPECIFIED) {
        throw new RuntimeException(
                "SlidingDrawer cannot have UNSPECIFIED dimensions");
    }

    final View handle = getHandle();
    final View content = getContent();
    measureChild(handle, widthMeasureSpec, heightMeasureSpec);

    if (mVertical) {
        int height = heightSpecSize - handle.getMeasuredHeight()
                - mTopOffset;
        content.measure(widthMeasureSpec,
                MeasureSpec.makeMeasureSpec(height, heightSpecMode));
        heightSpecSize = handle.getMeasuredHeight() + mTopOffset
                + content.getMeasuredHeight();
        widthSpecSize = content.getMeasuredWidth();
        if (handle.getMeasuredWidth() > widthSpecSize)
            widthSpecSize = handle.getMeasuredWidth();
    } else {
        int width = widthSpecSize - handle.getMeasuredWidth() - mTopOffset;
        getContent().measure(
                MeasureSpec.makeMeasureSpec(width, widthSpecMode),
                heightMeasureSpec);
        widthSpecSize = handle.getMeasuredWidth() + mTopOffset
                + content.getMeasuredWidth();
        heightSpecSize = content.getMeasuredHeight();
        if (handle.getMeasuredHeight() > heightSpecSize)
            heightSpecSize = handle.getMeasuredHeight();
    }

    setMeasuredDimension(widthSpecSize, heightSpecSize);
}

private boolean mVertical;
private int mTopOffset;

}

0 个答案:

没有答案