【问题标题】:Add more views to viewPager, Android为 viewPager,Android 添加更多视图
【发布时间】:2017-04-06 08:34:19
【问题描述】:

在 android 中工作我按照在线教程创建了一个视图寻呼机,我想以编程方式向其中添加文本。我已经成功地创建了它的大部分,添加了 4 个视图,但是当我在视图之间滚动时,我总是得到相同的视图。我的代码如下。有没有办法让初始视图简单地说 Page1 然后滚动时会说 Page2 等等。

编辑

为了澄清,我已经相当简化了我想在这里做的事情,最终目标是让每个“视图”都不同。例如,第 1 页包含一个文本视图,第 2 页包含一个图像视图,第 3 页包含一些较大的文本。

Page 1 = "This is page 1"
Page 2 = An image of a sheep
Page 3 = Big red text saying "BANG!"

XML

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/black">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="fill_parent"
            android:layout_height="300dp" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/myImage"
            android:id="@+id/imageView13" />

    </LinearLayout>
</RelativeLayout>

Java

import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;


public class Testing extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_testing);

        ViewPager vp = (ViewPager) findViewById(R.id.viewpager);
        vp.setAdapter(new MyPagerAdapter(this));
    }
}

class MyPagerAdapter extends PagerAdapter {

    private Context ctx;

    public MyPagerAdapter(Context context) {
        ctx = context;
    }

    // Set number of slides
    @Override
    public int getCount() {
        return 4;
    }

    @Override
    public Object instantiateItem(View collection, int position) {

        TextView tv =  new TextView(ctx);
        tv.setTextSize(50);
        tv.setTextColor(Color.WHITE);
        tv.setText("PAGE1");
        ((ViewPager) collection).addView(tv);
        return tv;
    }

    // Destroy
    @Override
    public void destroyItem(View collection, int position, Object view) {
        ((ViewPager) collection).removeView((View) view);
    }

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

    // Parceable
    @Override
    public Parcelable saveState() {
        return null;
    }

    // Restore state
    @Override
    public void restoreState(Parcelable arg0, ClassLoader arg1) {
    }

    //Start Update
    @Override
    public void startUpdate(View arg0) {
    }

    // Finish update
    @Override
    public void finishUpdate(View arg0) {
    }
}

【问题讨论】:

    标签: java android android-viewpager


    【解决方案1】:

    滚动页面时的位置变化...

    @Override
    public Object instantiateItem(View collection, int position) {
    
    if(position==0){
        TextView tv =  new TextView(ctx);
        tv.setTextSize(50);
        tv.setTextColor(Color.WHITE);
        tv.setText("PAGE "+position);
        collection.addView(tv);
        return tv;
    }else if(position==1){
       ImageView iv = new ImageView(ctx);
       iv.setImageResource(R.mipmap.ic_launcher);
       collection.addView(iv);
       return iv;
    }else if(position==2){
       TextView tv =  new TextView(ctx);
        tv.setTextSize(50);
        tv.setTextColor(Color.WHITE);
        tv.setText("BANG");
        collection.addView(tv);
        return tv;
    }else if(position==3){
       ImageView iv = new ImageView(ctx);
       iv.setImageResource(R.mipmap.ic_launcher);
       collection.addView(tv);
        return iv;
    }
    

    【讨论】:

    • 道歉我似乎简化了我的问题,我已经编辑了问题。
    猜你喜欢
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    相关资源
    最近更新 更多