2016-09-08 8 views
0

Ich bin ViewPager und ScrollView auf Android integrieren, aber es scheint nicht zu funktionieren. Die ViewPager Scroll funktioniert gut, aber die ScrollView funktioniert überhaupt nicht auf alle Lösungen, die ich ausprobiert habe. Im Folgenden finden Sie meine MainActivity-Klasse und das XML-Layout.viewpager scrollview funktioniert nicht android

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.navigation_drawer); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    hostDescription = (TextView) findViewById(R.id.host_description); 
    hostDescription.setTypeface(quickSandRegular); 
    hostDescription.setTextColor(Color.BLACK); 

    scrollView = (ScrollView) findViewById(R.id.scroll); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 
    View header=navigationView.getHeaderView(0); 

    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 
    ImageAdapter adapter = new ImageAdapter(); 
    viewPager.setAdapter(adapter); 

    // set navigation font 
    Menu m = navigationView.getMenu(); 
    for (int i=0;i<m.size();i++) { 
     MenuItem mi = m.getItem(i); 

     // apply font to subment 
     SubMenu subMenu = mi.getSubMenu(); 
     if (subMenu!=null && subMenu.size() >0) { 
      for (int j=0; j <subMenu.size();j++) { 
       MenuItem subMenuItem = subMenu.getItem(j); 
       applyFontToMenuItem(subMenuItem); 
      } 
     } 

     applyFontToMenuItem(mi); 
    } 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

} 

xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:openDrawer="start"> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <!-- here insert your scrollview and all views you need for this page this is actually your page --> 
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/scroll" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="@color/white" 
     android:fillViewport="true" 
     android:orientation="vertical" > 

     <LinearLayout 
      android:id="@+id/LinearLayoutMain" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" > 

      <LinearLayout 
       android:id="@+id/LinearLayout01" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@color/blue" 
       android:orientation="vertical" > 

       <TextView 
        android:id="@+id/welcome_text" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="80dp" 
        android:layout_marginBottom="30dp" 
        android:textColor="@android:color/holo_green_light" 
        android:layout_marginLeft="17dp" 
        android:background="@color/blue" 
        android:textSize="26dp"/> 

       <TextView 
        android:id="@+id/intro_text" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="120dp" 
        android:layout_marginBottom="10dp" 
        android:text="Save on your next adventure." 
        android:textColor="@android:color/holo_green_light" 
        android:layout_marginLeft="17dp" 
        android:background="@color/blue" 
        android:textSize="28dp"/> 

       <View 
        android:layout_width="fill_parent" 
        android:layout_height="1dip" 
        android:background="#cccccc" /> 
      </LinearLayout> 

      <LinearLayout 
      android:id="@+id/LinearLayout02" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/white" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/host_text" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Become a Host" 
       android:layout_gravity="center" 
       android:layout_marginTop="20dp" 
       android:layout_weight="1" 
       android:textSize="21dp"/> 

      <!--<ImageView 
       android:id="@+id/image1" 
       android:layout_marginTop="20dp" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:paddingLeft="15dp" 
       android:paddingRight="15dp" 
       android:paddingBottom="10dp" 
       android:scaleType="fitXY" 
       android:src="@drawable/sv" />--> 

      <android.support.v4.view.ViewPager 
       android:id="@+id/view_pager" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:paddingLeft="20dp" 
       android:paddingRight="20dp" 
       /> 

      <TextView 
       android:id="@+id/host_description" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Earn money sharing your extra space" 
       android:layout_marginTop="10dp" 
       android:layout_gravity="center" 
       android:textSize="17dp"/> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dip" 
       android:background="#cccccc" /> 
     </LinearLayout> 

      <LinearLayout 
       android:id="@+id/LinearLayout03" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="@color/white" 
       android:orientation="vertical" > 

       <TextView 
        android:id="@+id/host_telxt" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Become a Host" 
        android:layout_gravity="center" 
        android:layout_marginTop="20dp" 
        android:layout_weight="1" 
        android:textSize="21dp"/> 

       <!--<ImageView 
        android:id="@+id/image1" 
        android:layout_marginTop="20dp" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center" 
        android:paddingLeft="15dp" 
        android:paddingRight="15dp" 
        android:paddingBottom="10dp" 
        android:scaleType="fitXY" 
        android:src="@drawable/sv" />--> 



       <TextView 
        android:id="@+id/host_escription" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Earn money sharing your extra space" 
        android:layout_marginTop="10dp" 
        android:layout_gravity="center" 
        android:textSize="17dp"/> 

       <View 
        android:layout_width="fill_parent" 
        android:layout_height="1dip" 
        android:background="#cccccc" /> 
      </LinearLayout> 

     </LinearLayout> 


     </ScrollView> 
</RelativeLayout> 

<include 
    layout="@layout/app_bar_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/nav_header_main" 
    app:menu="@menu/activity_main_drawer" /> 

ImageAdapter

class ImageAdapter extends PagerAdapter { 

    @Override 
    public int getCount() { 
     return IMAGES.length; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == ((ImageView) object); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     ImageView imageView = new ImageView(getApplicationContext()); 
     imageView.setImageResource(IMAGES[position]); 
     ((ViewPager) container).addView(imageView, 0); 
     return imageView; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     ((ViewPager) container).removeView((ImageView) object); 
    } 
} 
+0

Versuchen Sie 'android: scrollbars =" vertikal "' innerhalb * Scroll View *. –

Antwort

0

Sie müssen ViewPager.OnPageChangeListener implementieren und Ihre Logik schreiben in onPageScrollStateChanged

@Override 
     public void onPageScrollStateChanged(int state) { 
     ScrollView.requestDisallowInterceptTouchEvent(!(!lastPage && state == ViewPager.SCROLL_STATE_IDLE)); 
} 

Sie müssen Logik schreiben, um zu finden, ob Sie auf der letzten Seite sind oder nicht, was einfach ist.

+0

Was bedeutet die Variable lastPage? – joeabala

+0

Erstellen Sie eine boolesche Variable, um festzustellen, ob Sie sich auf der letzten Seite von viewPager befinden oder nicht –

+0

wie private boolean lastPage = false; – joeabala

0

Das Problem wurde behoben, indem die layout_height des ViewPagers angepasst wurde. Unten ist der Code:

<android.support.v4.view.ViewPager 
    android:id="@+id/view_pager2" 
    android:layout_width="match_parent" 
    android:layout_height="300dp" 
    android:paddingLeft="20dp" 
    android:paddingRight="20dp"/> 

ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 
     ImageAdapter adapter = new ImageAdapter(); 
     viewPager.setAdapter(adapter); 
     viewPager.setClipToPadding(false); 
     viewPager.setPadding(70, 0, 70, 0); 

class ImageAdapter extends PagerAdapter { 

     @Override 
     public int getCount() { 
      return IMAGES.length; 
     } 

     @Override 
     public boolean isViewFromObject(View view, Object object) { 
      return view == ((ImageView) object); 
     } 

     @Override 
     public Object instantiateItem(ViewGroup container, int position) { 
      ImageView imageView = new ImageView(getApplicationContext()); 
      imageView.setImageResource(IMAGES[position]); 
      ((ViewPager) container).addView(imageView, 0); 
      return imageView; 
     } 

     @Override 
     public void destroyItem(ViewGroup container, int position, Object object) { 
      ((ViewPager) container).removeView((ImageView) object); 
     } 

     @Override 
     public void setPrimaryItem(ViewGroup container, int position, Object object) { 
      setPrimaryItem((View) container, position, object); 
      // lastPage = IMAGES[position]==object; 
     } 
    } 
Verwandte Themen