2016-03-12 7 views
2

Хорошо, если я прокрутил немного, и swipetorefresh станет видимым, и если я попытаюсь увеличить с помощью двух пальцев, он просто станет еще ниже, чтобы обновиться. Я хочу добиться того, что если пользователь пытается увеличить масштаб, салфетки для обновления будут переопределены с помощью опции масштабирования. Вот какой код.Переопределить масштабирование по swipetorefresh - Android

Это простое управление увеличением масштаба.

myWebView.getSettings().setLoadWithOverviewMode(true); 
    myWebView.getSettings().setUseWideViewPort(true); 
    myWebView.getSettings().setBuiltInZoomControls(true); 
    myWebView.getSettings().setDisplayZoomControls(false); 

Вот от SwipeToRefresh:

mySwipeRefreshLayout.setOnRefreshListener(
     new SwipeRefreshLayout.OnRefreshListener() { 
       @Override 
       public void onRefresh() { 
        myWebView.reload(); 
        } 
     }); 

И я mySwipeRefreshLayout.setRefreshing(true); и mySwipeRefreshLayout.setRefreshing(false); в зависимости, где я хочу, чтобы использовать их. Какие-либо предложения?

ответ

0

Я была такая же проблема, и я успешно решить ее в следующем:

Создать новый класс простиралась от SwipeRefreshLayout

public class SwipeToRefresh extends SwipeRefreshLayout { 

private static final float REFRESH_RATE = 10f; 
private float mDownX, mDownY, scaleX, scaleY; 

public SwipeToRefresh(Context context) { 
    super(context); 
} 

public SwipeToRefresh(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

@Override 
public boolean onInterceptTouchEvent(MotionEvent ev) { 
    switch (ev.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      mDownX = ev.getX(); 
      mDownY = ev.getY(); 
      break; 
     case MotionEvent.ACTION_MOVE: 
      return doRefresh(ev); 
     case MotionEvent.ACTION_UP: 
      return doRefresh(ev); 
    } 
    return super.onInterceptTouchEvent(ev); 
} 

private boolean doRefresh(MotionEvent ev) { 
    scaleX = Math.abs(ev.getX() - mDownX); 
    scaleY = Math.abs(ev.getY() - mDownY); 
    if (scaleY/scaleX > REFRESH_RATE) { 
     return super.onInterceptTouchEvent(ev); 
    } else { 
     return false; 
    } 
} 

}

В деятельности

SwipeToRefresh mSwipeRefreshLayout = (SwipeToRefresh) findViewById(R.id.my_refresh_layout); 
    mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      // Refresh WebView 
     } 
    }); 

Донн» t забыть изменить название класса в макете

<com.example.package.SwipeToRefresh 
     android:id="@+id/my_refresh_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <WebView 
      android:id="@+id/webView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_alignParentStart="true" /> 

    </com.example.package.SwipeToRefresh> 

Удачи вам!

+0

Его большое улучшение, но все же щепотка для увеличения не отменяет салфетки для обновления. Если круг находится на экране, и вы пытаетесь увеличить его, он просто перемещается вверх или вниз. – Chunrand

 Смежные вопросы

  • Нет связанных вопросов^_^