Android: ScrollView в Flipper
Вопрос
У меня есть флиппер:
<?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);
}