【问题标题】:How to implement Listview Horizondally in carousel?如何在轮播中横向实现 Listview?
【发布时间】:2016-06-02 05:12:32
【问题描述】:

是否可以在 android 中创建一个轮播,其中包含一组在列表视图中水平对齐的图像。而且我还想在单击时突出显示一个图像项。

【问题讨论】:

标签: android image-gallery horizontal-scrolling


【解决方案1】:

请使用 RecyclerView 而不是 ListView。查看此代码 - Carousel。使用RecyclerView 作为根视图,LinearLayoutManager.HORIZONTAL 作为 LayoutManager。

【讨论】:

    【解决方案2】:

    在布局中查看 Pager

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

    在你的活动中

    public class Event_Image_Slider extends Activity {
    ViewPager viewPager;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event__image__slider);
        viewPager = (ViewPager) findViewById(R.id.viewPager);
    
        CustomAdapter adapter = new CustomAdapter(Event_Image_Slider.this);
        viewPager.setAdapter(adapter);
       }
    }
    

    您的自定义适配器代码,在您的活动之前声明 ArrayList imagepathArray =new ArrayList();

    public class CustomAdapter extends PagerAdapter{
    
    Context context;
    
    public CustomAdapter(Context context){
        this.context = context;
    
    }
    
    
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        // TODO Auto-generated method stub
    
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
    
        View viewItem = inflater.inflate(R.layout.image_item, container, false);
        ImageView imageView = (ImageView) viewItem.findViewById(R.id.imageView10);
    
        Glide.with(context).load(yourActivty.imagepathArray.get(position)).into(imageView);
    
    
    
        ((ViewPager)container).addView(viewItem);
    
        return viewItem;
    }
    
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return yourActivty.imagepathArray.size();
    }
    
    @Override
    public boolean isViewFromObject(View view, Object object) {
        // TODO Auto-generated method stub
    
        return view == ((View)object);
    }
    
    
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // TODO Auto-generated method stub
        ((ViewPager) container).removeView((View) object);
    }}
    

    【讨论】:

    • 所以这里不需要轮播?我们正在使用 viewPager。
    • 如果您只想在 Horizo​​nataly 中显示图像,那么您必须使用 Horizo​​ntalScrollView 或 View Pager
    【解决方案3】:

    您可以在您的项目中使用这个 github 库来实现轮播功能,这里是 carouselview library 的链接。

    应用级 Gradle 文件(不是项目级 gradle):

    compile 'com.synnapps:carouselview:0.0.9'
    

    在您的布局中包含以下代码:

    <com.synnapps.carouselview.CarouselView
        android:id="@+id/carouselView"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        app:fillColor="#FFFFFFFF"
        app:pageColor="#00000000"
        app:radius="6dp"
        app:slideInterval="3000"
        app:strokeColor="#FF777777"
        app:strokeWidth="1dp"/>
    

    在您的活动中包含以下代码

        public class SampleCarouselViewActivity extends AppCompatActivity {
    
        CarouselView carouselView;
    
        int[] sampleImages = {R.drawable.image_1, R.drawable.image_2, R.drawable.image_3, R.drawable.image_4, R.drawable.image_5};
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_sample_carousel_view);
    
            carouselView = (CarouselView) findViewById(R.id.carouselView);
            carouselView.setPageCount(sampleImages.length);
    
            carouselView.setImageListener(imageListener);
        }
    
        ImageListener imageListener = new ImageListener() {
            @Override
            public void setImageForPosition(int position, ImageView imageView) {
                imageView.setImageResource(sampleImages[position]);
            }
        };
    }
    

    您还可以在给定链接上探索额外支持的 xml 属性。

    【讨论】:

      猜你喜欢
      • 2020-10-07
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 2016-08-13
      相关资源
      最近更新 更多