Вопрос

У меня есть флиппер:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/ParentLayout"
    xmlns:android="http://schemas.android.com/apk/res/android" style="@style/MainLayout" >
            <LinearLayout android:id="@+id/FlipperLayout" style="@style/FlipperLayout">
                <ViewFlipper android:id="@+id/viewflipper" style="@style/ViewFlipper">
                    <!--adding views to ViewFlipper-->
                    <include layout="@layout/home1" android:layout_gravity="center_horizontal" />
                    <include layout="@layout/home2" android:layout_gravity="center_horizontal" />
                </ViewFlipper>
            </LinearLayout>
</LinearLayout>

Первый макет,Дом 1, состоит из вида прокрутки. Что я должен сделать, чтобы различать листовое жестом и прокруткой? На данный момент:

  • Если я удаляю вид прокрутки, я могу проверить через
  • Если я добавлю прокрутки прокрутки, я могу только прокрутить.

Я видел предположение, что я должен переопределить onIternecttouchevent (MotionEvent), но я не знаю, как это сделать. Мой код в данный момент выглядит так:

public class HomeActivity extends Activity {
-- declares
@Override
public void onCreate(Bundle savedInstanceState) {
    -- declares & preliminary actions

    LinearLayout layout = (LinearLayout) findViewById(R.id.ParentLayout);
    layout.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if (gestureDetector.onTouchEvent(event)) {
                return true;
            }
            return false;
        }});

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    gestureDetector.onTouchEvent(event); 
    return true;
    }
class MyGestureDetector extends SimpleOnGestureListener {
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
    // http://www.codeshogun.com/blog/2009/04/16/how-to-implement-swipe-action-in-android/
    }
}

}

Кто-нибудь можно вести мне в правильном направлении?

Спасибо.

Это было полезно?

Решение

Флиппер вид отображает только одно представление за раз, как объяснено здесь. Отказ Это своего рода переключатель, который очень полезен, когда разработчик хочет дать пользователю выбора о том, как просмотреть данные (список, миниатюры, ECT). Поэтому причина, по которой вы не сможете прокрутить и бросать в то же время, это потому, что один вид только прокручивает, а другой вид только сжимается, и только один открыт за раз.

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

Надеюсь, это было полезно!

Другие советы

В основном, если у вас есть ScrollView в ViewLipper, все, что вам нужно сделать, это прикрепить OnTouchListener к ScrollView:

    ScrollView scrollView = (ScrollView) findViewById(R.id.scrollView);        
    scrollView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event){
            if (myGestureDetector.onTouchEvent(event)){
                return true;
            }
            else{   
                return false;
            }
        }
    });

Я пробую этот способ сделать это:

@Override
public boolean onTouchEvent(MotionEvent event) 
{
    scrollView.onTouchEvent(event); 
    return super.onTouchEvent(event);
}

@Override
public boolean dispatchTouchEvent(MotionEvent e)
{
    gestureDetector.onTouchEvent(e);
    return super.dispatchTouchEvent(e);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top