28

画像を含むビュー ページャー ファイルでページ インジケーターを取得する必要があります。これが私のコードです。

public class IndicatorActivity extends Activity {


 /** Called when the activity is first created. */
    @Override

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            MyPagerAdapter adapter = new MyPagerAdapter();
            ViewPager myPager = (ViewPager) findViewById(R.id.pager);
            myPager.setAdapter(adapter);
            myPager.setCurrentItem(0);
            TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.indicat);
            indicator.setViewPager( myPager );
    }
}

このコードでは、 TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.indicat);asでエラーが発生しましたTitlePageIndicator cannot be resolved to a type。このエラーは何ですか。どうすれば解決できますか?

ここに私のxmlコードがあります:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         />
    <com.viewpagerindicator.TitlePageIndicator
    android:id="@+id/indicat"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent" />
</LinearLayout>

にどのコードを書く必要がありTitlePageIndicatorますか? fragment を使用せずにこれを行いたいです

次のようなクラスも作成しました。

class MyPagerAdapter extends PagerAdapter {

     private static Integer[] titles = new Integer[] 
                { 
        R.drawable.jk,R.drawable.lm,R.drawable.no
                };

    public int getCount() {
            return 3;
    }

    public Object instantiateItem(View collection, int position) {

            LayoutInflater inflater = (LayoutInflater) collection.getContext()
                            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View view;
            ImageView iv;

            view = inflater.inflate(R.layout.first, null);

            ((ViewPager) collection).addView(view, 0);
            switch (position) {
            case 0:
                iv = (ImageView)view.findViewById(R.id.imageView1);
                iv.setImageResource(titles[position]);
                    break;
            case 1:
                iv = (ImageView)view.findViewById(R.id.imageView1);
                iv.setImageResource(titles[position]);
                    break;
            case 2:
                 iv = (ImageView)view.findViewById(R.id.imageView1);
                iv.setImageResource(titles[position]);
                    break;
            }
            return view;
    }

    public void destroyItem(View arg0, int arg1, Object arg2) {
            ((ViewPager) arg0).removeView((View) arg2);

    }



    public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == ((View) arg1);

    }

}

このクラス以外にやりたいことはありましたか?

助けてくれてありがとう

4

7 に答える 7

54

更新: 2017 年 3 月 22 日

メイン フラグメント レイアウト:

       <FrameLayout 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="match_parent">

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

            <RadioGroup
                android:id="@+id/page_group"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|bottom"
                android:layout_marginBottom="@dimen/margin_help_container"
                android:orientation="horizontal">

                <RadioButton
                    android:id="@+id/page1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:checked="true" />

                <RadioButton
                    android:id="@+id/page2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <RadioButton
                    android:id="@+id/page3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
            </RadioGroup>
        </FrameLayout>

次のように、フラグメントにビューとイベントを設定します。

        mViewPaper = (ViewPager) view.findViewById(R.id.viewpager);
        mViewPaper.setAdapter(adapder);

        mPageGroup = (RadioGroup) view.findViewById(R.id.page_group);
        mPageGroup.setOnCheckedChangeListener(this);

        mViewPaper.addOnPageChangeListener(this);

       *************************************************
       *************************************************

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    }

    @Override
    public void onPageSelected(int position) {
        // when current page change -> update radio button state
        int radioButtonId = mPageGroup.getChildAt(position).getId();
        mPageGroup.check(radioButtonId);
    }

    @Override
    public void onPageScrollStateChanged(int state) {
    }

    @Override
    public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
        // when checked radio button -> update current page
        RadioButton checkedRadioButton = (RadioButton)radioGroup.findViewById(checkedId);
        // get index of checked radio button
        int index = radioGroup.indexOfChild(checkedRadioButton);

        // update current page
        mViewPaper.setCurrentItem(index), true);
    }

カスタム チェックボックスの状態:カスタム チェックボックスの画像 android

Viewpager チュートリアル: http://architects.dzone.com/articles/android-tutorial-using

ここに画像の説明を入力

于 2015-01-23T09:50:00.917 に答える
12

必要な作業は次のとおりです。

1-ライブラリをまだダウンロードしていない場合はダウンロードします。

2- Eclipse にインポートします。

3- ライブラリを使用するようにプロジェクトを設定します: [プロジェクト] -> [プロパティ] -> [Android] -> [ライブラリ] セクションまで下にスクロールし、[追加... ] をクリックして、viewpagerindicator を選択します。

4-これで、インポートできるはずですcom.viewpagerindicator.TitlePageIndicator

フラグメントを使用せずにこれを実装することについて:

viewpagerindicatiorに付属のサンプルでは、​​ライブラリが を持つ で使用されていることがわかりViewPagerますFragmentPagerAdapter

しかし、実際にはライブラリ自体はFragment独立しています。が必要なだけViewPagerです。したがって、 a のPagerAdapter代わりに aFragmentPagerAdapterを使用するだけで、準備完了です。

于 2012-09-07T11:37:29.267 に答える
10

これはすでに回答済みであることは知っていますが、ViewPager インジケーターのシンプルで飾り気のない実装を探している人のために、オープン ソース化したものを実装しました。Jake Wharton のバージョンがニーズに対して少し複雑であると感じている人は、 https://github.com/jarrodrobins/SimpleViewPagerIndicatorをご覧ください。

于 2012-10-19T05:53:16.477 に答える
2

@ vuhung3990 によって与えられた素敵な答えに対する単なる改善です。私はソリューションを実装し、うまく機能しますが、1 つのラジオ ボタンに触れると、それが選択され、何も起こりません。

ラジオボタンがタップされたときにもページを変更することをお勧めします。これを行うには、リスナーを radioGroup に追加するだけです。

mPager = (ViewPager) findViewById(R.id.pager);
final RadioGroup radioGroup = (RadioGroup)findViewById(R.id.radiogroup);    
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                    case R.id.radioButton :
                        mPager.setCurrentItem(0, true);
                        break;
                    case R.id.radioButton2 :
                        mPager.setCurrentItem(1, true);
                        break;
                    case R.id.radioButton3 :
                        mPager.setCurrentItem(2, true);
                        break;
                }
            }
        });
于 2016-11-30T11:30:46.830 に答える