问题使用" AndroidSwipeLayout"图书馆"大马加"对于高于4.4的版本(kitkat) - BackView从右侧滑动更多

时间:2015-10-12 07:34:05

标签: android android-layout

我使用了来自" daimajia"的AndroidSwipeLayout图书馆。 Android Swipe Layout

虽然版本高于4.4 Kitkat,但它的工作正常。滑动布局的后视图从右侧滑动更多..

请参阅以下4.4 kitkat及以上版本

的附图
  

Android Swipe Layout适用于Android Ver。 4.2(软糖)低于Kitkat

Android Swipe Layout Works Perfectly for Android Ver. 4.2 (jellybean) below Kitkat

  

Android Swipe Layout - 右侧为Android版本提供更多幻灯片。 4.4 Kitkat及以上

Android Swipe Layout - backview slides more from right for Android ver. 4.4 Kitkat and above

2 个答案:

答案 0 :(得分:7)

我做了一些研究,发现拖拽距离有问题。现在我已经找到了解决方法。这导致奇怪的动画跳跃但最终backview将转到正确的位置。我会尽力找到更好的解决方案。

在“SwipeLayout”课程中,我们需要修改“open”方法:

public void open(boolean smooth, boolean notify) {
    View surface = getSurfaceView(), bottom = getCurrentBottomView();
    if (surface == null) {
        return;
    }
    int dx, dy;
    Rect rect = computeSurfaceLayoutArea(true);
    // if (smooth) {
    // mDragHelper.smoothSlideViewTo(surface, rect.left, rect.top);
    // } else {
    dx = rect.left - surface.getLeft();
    dy = rect.top - surface.getTop();
    surface.layout(rect.left, rect.top, rect.right, rect.bottom);
    if (getShowMode() == ShowMode.PullOut) {
        Rect bRect = computeBottomLayoutAreaViaSurface(ShowMode.PullOut, rect);
        if (bottom != null) {
            bottom.layout(bRect.left, bRect.top, bRect.right, bRect.bottom);
        }
    }
    if (notify) {
        dispatchRevealEvent(rect.left, rect.top, rect.right, rect.bottom);
        dispatchSwipeEvent(rect.left, rect.top, dx, dy);
    } else {
        safeBottomView();
    }
    // }
    invalidate();
}

答案 1 :(得分:1)

我已经解决了这个问题...

这是我用于swipelayout的xml

<?xml version="1.0" encoding="utf-8" ?>
<com.synsoft.foodjini.swipelib.SwipeLayout         xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:swipe="http://schemas.android.com/tools"
     android:id="@+id/swipe"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     swipe:leftEdgeSwipeOffset="0dp"
     swipe:rightEdgeSwipeOffset="0dp"
     swipe:show_mode="lay_down"
     android:background="@color/colorPrimary">

<LinearLayout
    android:id="@+id/cart.item.back"
    android:layout_width="600px"
    android:layout_height="match_parent"
    android:background="@color/colorPrimary"
    android:orientation="horizontal"
    android:gravity="center"
    android:tag="Bottom3"
    android:weightSum="10"
    android:paddingLeft="6dp"
    android:paddingRight="6dp"
    android:paddingTop="12dp"
    android:paddingBottom="12dp">

    <ImageView
        android:id="@+id/edit"
        android:layout_width="120dp"
        android:layout_height="match_parent"
        android:scaleType="centerInside"
        android:layout_gravity="center"
        android:src="@drawable/cart_main_item_edit_ico"/>
    <ImageView
        android:id="@+id/delete"
        android:layout_width="120dp"
        android:scaleType="centerInside"
        android:layout_gravity="center"
        android:layout_height="match_parent"
        android:src="@drawable/cart_main_item_delete_ico"/>

</LinearLayout>

<RelativeLayout
    android:id="@+id/cart.item.front"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="6dp"
    android:paddingRight="6dp"
    android:paddingTop="12dp"
    android:paddingBottom="12dp"
    android:background="@android:color/white">

    <TextView
        android:id="@+id/quantities"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="2"
        android:textSize="18sp"
        android:textStyle="normal"/>

    <TextView
        android:id="@+id/cart.item.names"
        android:layout_width="220dp"
        android:layout_height="wrap_content"
        android:text="X Item Name Lorem Ipsum"
        android:layout_marginLeft="12dp"
        android:ellipsize="end"
        android:singleLine="true"
        android:textAllCaps="true"
        android:layout_toRightOf="@+id/quantities"
        android:textSize="18sp"
        android:textStyle="normal"/>

    <TextView
        android:id="@+id/cart.item.portions"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="small"
        android:layout_toRightOf="@+id/cart.item.names"
        android:layout_alignBottom="@+id/cart.item.names"
        android:textSize="13sp"
        android:textAllCaps="true"
        android:textStyle="normal"/>

    <TextView
        android:id="@+id/cart.item.prices"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="20.00"
        android:layout_alignParentRight="true"
        android:drawableLeft="@drawable/cart_item_rupee_ico"
        android:drawablePadding="6dp"
        android:layout_alignBottom="@+id/cart.item.names"
        android:textSize="16sp"
        android:textStyle="normal"/>

    <ImageView
        android:id="@+id/cart.item.divider1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/cart_main_item_sap"
        android:layout_marginTop="12dp"
        android:layout_below="@+id/cart.item.names"
        android:layout_alignLeft="@+id/cart.item.names"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_below="@+id/cart.item.divider1"
        android:id="@+id/cart.item.addons.tag"
        android:layout_marginTop="12dp"
        android:layout_marginBottom="12dp">

    </LinearLayout>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/cart_main_item_sap"
        android:layout_marginTop="6dp"
        android:layout_below="@+id/cart.item.addons.tag"
        android:layout_alignLeft="@+id/cart.item.names"/>
</RelativeLayout>

  

我所做的是与SwipeLayout的背景相匹配   (parentlayout)和后视图(swipeview)   android:background =&#34; @ color / colorPrimary&#34; ..如果是backview   定位是不恰当的,视图似乎不那么不对称

同时将SwipeLayout的show_mode更改为lay_down 和前景到白色的背景

因此,跳过kitkat及更高版本上的问题。

虽然它不是正确的解决方案..将来我必须研究lib并尝试找出为什么定位不适合上面的kitkat

enter image description here