2016-06-11 16 views
3

Ich möchte eine Bildfolie hinzufügen. Kann aber nicht von rechts nach links rutschen. (für Sprachen wie Arabisch oder Hebräisch)Android ViewPager Bild Folie von rechts nach links

Ich habe fast alle Antworten in stackoverflow überprüft, kann aber keine klare Lösung finden.

Ich schreibe hier den ganzen Code.

Bitte schreiben Sie mir klar, ich bin kein Profi

mainActivity;

package com.manishkpr.viewpagerimagegallery; 

import android.app.Activity; 
import android.os.Bundle; 
import android.support.v4.view.ViewPager; 

public class MainActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

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


    } 


} 

hier ist die ImageAdapter.java;

package com.manishkpr.viewpagerimagegallery; 

import android.content.Context; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 

public class ImageAdapter extends PagerAdapter { 
    Context context; 
    private int[] GalImages = new int[] { 
     R.drawable.one, 
     R.drawable.two, 
     R.drawable.three 
    }; 
    ImageAdapter(Context context){ 
     this.context=context; 
    } 
    @Override 
    public int getCount() { 
     return GalImages.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(context); 
     int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium); 
     imageView.setPadding(padding, padding, padding, padding); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
     imageView.setImageResource(GalImages[position]); 
     ((ViewPager) container).addView(imageView, 0); 


     return imageView; 
    } 

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

und hier ist die Layout-Datei;

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

      <android.support.v4.view.ViewPager 
      android:id="@+id/view_pager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

</RelativeLayout> 
+0

einfach besuchten Seite Index von Array entfernen –

+0

Oh! Es tut mir leid !, Sie möchten ändern Sie die Folie Position von rechts nach links für Arabisch, ich vermisse es verstehen, so ignorieren vorherige Kommentare bitte, die Antwort auf Sie! –

+0

@ Survivor, ich bin kein Profi .. könnten Sie ein bisschen erklären? – ali

Antwort

3

erstellen Layout-Datei pager_item.xml:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/imageView" /> 
</LinearLayout> 

ändern PagerAdapter wie folgt aus:

public class ImageAdapter extends PagerAdapter { 
Context context; 
private int[] GalImages = new int[] { 
    R.drawable.one, 
    R.drawable.two, 
    R.drawable.three 
}; 

LayoutInflater mLayoutInflater; 

ImageAdapter(Context context){ 
    this.context=context; 
    mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 
@Override 
public int getCount() { 
    return GalImages.length; 
} 

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

@Override 
public Object instantiateItem(ViewGroup container, int position) { 
    View itemView = mLayoutInflater.inflate(R.layout.pager_item, container, false); 

    ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView); 
    imageView.setImageResource(GalImages[position]); 

    container.addView(itemView); 

    return itemView; 
} 

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

EDIT 1:

A trick :

public class MainActivity extends Activity { 


@Override 
    public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 
ImageAdapter adapter = new ImageAdapter(this); 
viewPager.setAdapter(adapter); 
viewPager.setCurrentItem(adapter.getCount()-1); 

} 

Ich hoffe, das hilft :)

+0

vielen Dank. aber ich habe PagerAdapter nicht? muss ich eine neue Java-Datei hinzufügen, PagerAdapter.java genannt? – ali

+0

Fehler: (34, 25) Fehler: Symbolvariable kann nicht gefunden werden mLayoutInFlater – ali

+0

Bitte sehen Sie meinen bearbeiteten Code Ich habe die Antwort bearbeitet .. und definiert 'mLayoutInFlater'. Verwenden Sie den obigen Code des Adapters. –

5

ViewPager unterstützt RTL nicht.

Sie müssen einen benutzerdefinierten ViewPager erstellen, um von rechts nach links für Arabisch und andere Sprachen zu wischen.

Wenn Sie keinen Code erstellen möchten, stehen Ihnen viele Bibliotheken zur Verfügung, die Sie verwenden können.

1. RtlViewPager

2. RtlViewPager

+0

vielen Dank, Mann –

1

Statt ViewPager der Verwendung Ich schlage vor, Sie SwipeDeck zu verwenden, da als Niranj Patel sagte ViewPager nicht nach links rechts unterstützt.

<?xml version="1.0" encoding="utf-8"?> 
<com.daprlabs.cardstack.SwipeFrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:swipedeck="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <com.daprlabs.cardstack.SwipeDeck 
     android:id="@+id/swipe_deck" 
     android:layout_width="match_parent" 
     android:layout_height="480dp" 
     android:padding="20dp" 
     swipedeck:card_spacing="10dp" 
     swipedeck:max_visible="3" 
     swipedeck:render_above="true" 
     swipedeck:rotation_degrees="15" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:text="Button" /> 

</com.daprlabs.cardstack.SwipeFrameLayout> 
0

Gerade smiple Lösung, aber es ist nicht professionell

schreiben diese in XML für VeiwPager

android:rotationY="180" 

und auch in veiw_item

  android:rotationY="180".