Android viewPager image slide right to left

前端 未结 4 2024
旧巷少年郎
旧巷少年郎 2021-01-05 02:21

I want to add an image slide. But cannot make it slide from right to left. (for languages like Arabic or Hebrew)

I checked nearly all replies in stackoverflow, but c

相关标签:
4条回答
  • 2021-01-05 02:43

    Create a Layout file 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>
    

    Change your PagerAdapter like this:

    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);
    
    }
    

    I hope this helps :)

    0 讨论(0)
  • 2021-01-05 02:50

    Just smiple solution but it is not professional

    Write this in xml for VeiwPager

     android:rotationY="180" 
    

    and also in veiw_item

               android:rotationY="180".
    
    0 讨论(0)
  • 2021-01-05 02:53

    ViewPager is not support RTL.

    You have to create custom ViewPager for swipe Right To Left for Arabic and other languages.

    If you don't want to make code then there are lots of library available you can use one of them.

    1. RtlViewPager

    2. RtlViewPager

    0 讨论(0)
  • 2021-01-05 02:56

    Instead of using ViewPager I suggest you to use SwipeDeck Because as Niranj Patel said ViewPager does not Support Right to left.

    <?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 讨论(0)
提交回复
热议问题