ビューページャーファイルに画像付きのページインジケーターを取得する必要があります。これが私のコードです。
_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);
で_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
に書き込む必要があるコードは何ですか? フラグメントを使用せずにこれを行いたい。
私は次のようなクラスも作成しました:
_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);
}
}
_
このクラス以上のことをしたいですか?
助けてくれてありがとう
実行する必要があるいくつかのことを次に示します。
1 library をまだダウンロードしていない場合はダウンロードします。
2- Eclipseにインポートします。
3-ライブラリを使用するようにプロジェクトを設定します:Project-> Properties-> Android-> Libraryセクションまでスクロールダウンし、Add ...およびviewpagerindicatorを選択します。
4-これで、com.viewpagerindicator.TitlePageIndicator
をインポートできるはずです。
フラグメントを使用せずにこれを実装することについて:
viewpagerindicatiorに付属するサンプルでは、ViewPager
を持つFragmentPagerAdapter
でライブラリが使用されていることがわかります。 。
しかし実際には、ライブラリ自体はFragment
独立です。必要なのはViewPager
だけです。したがって、PagerAdapter
の代わりにFragmentPagerAdapter
を使用するだけで、準備完了です。
更新:22/03/2017
メインフラグメントレイアウト:
<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
ビューページャーのチュートリアル: http://architects.dzone.com/articles/Android-tutorial-using
これはすでに回答されていますが、ViewPagerインジケーターのシンプルで飾り気のない実装を探している人のために、私はオープンソースの実装を実装しました。 Jake Whartonのバージョンがニーズに対して少し複雑だと思う人は、 https://github.com/jarrodrobins/SimpleViewPagerIndicator をご覧ください。
@JRODのSimpleViewPagerIndicatorも使用しました。また、@ manuelJの説明に従ってクラッシュします。
彼の文書によると:
SimpleViewPagerIndicator pageIndicator = (SimpleViewPagerIndicator) findViewById(R.id.page_indicator);
pageIndicator.setViewPager(pager);
この行も必ず追加してください。
pageIndicator.notifyDataSetChanged();
SimpleViewPagerIndicatorが適切にインスタンス化されておらず、アイテムが空であるため、配列の範囲外例外でクラッシュします。 notifyDataSetChangedを呼び出すと、すべての値が適切に設定されるか、適切にリセットされます。
@ 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;
}
}
});
あなたは次のことをしなければなりません:
1-完全なプロジェクトをここからダウンロードします https://github.com/JakeWharton/ViewPagerIndicatorViewPager Indicator 2- Eclipseにインポートします。
インポート後、次のタイプの画面を作成する場合は、以下の手順に従います-
変化する
サンプルサークルデフォルト
package com.viewpagerindicator.sample;
import Android.os.Bundle;
import Android.support.v4.view.ViewPager;
import com.viewpagerindicator.CirclePageIndicator;
public class SampleCirclesDefault extends BaseSampleActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_circles);
mAdapter = new TestFragmentAdapter(getSupportFragmentManager());
mPager = (ViewPager)findViewById(R.id.pager);
// mPager.setAdapter(mAdapter);
ImageAdapter adapter = new ImageAdapter(SampleCirclesDefault.this);
mPager.setAdapter(adapter);
mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);
}
}
ImageAdapter
package com.viewpagerindicator.sample;
import Android.content.Context;
import Android.support.v4.view.PagerAdapter;
import Android.support.v4.view.ViewPager;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.ViewGroup;
import Android.widget.ImageView;
import Android.widget.TextView;
public class ImageAdapter extends PagerAdapter {
private Context mContext;
private Integer[] mImageIds = { R.drawable.about1, R.drawable.about2,
R.drawable.about3, R.drawable.about4, R.drawable.about5,
R.drawable.about6, R.drawable.about7
};
public ImageAdapter(Context context) {
mContext = context;
}
public int getCount() {
return mImageIds.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
LayoutInflater inflater = (LayoutInflater) container.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View convertView = inflater.inflate(R.layout.gallery_view, null);
ImageView view_image = (ImageView) convertView
.findViewById(R.id.view_image);
TextView description = (TextView) convertView
.findViewById(R.id.description);
view_image.setImageResource(mImageIds[position]);
view_image.setScaleType(ImageView.ScaleType.FIT_XY);
description.setText("The natural habitat of the Niligiri tahr,Rajamala Rajamala is 2695 Mts above sea level"
+ "The natural habitat of the Niligiri tahr,Rajamala Rajamala is 2695 Mts above sea level"
+ "The natural habitat of the Niligiri tahr,Rajamala Rajamala is 2695 Mts above sea level");
((ViewPager) container).addView(convertView, 0);
return convertView;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((View) object);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ViewGroup) object);
}
}
gallery_view.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:background="@drawable/about_bg"
Android:orientation="vertical" >
<LinearLayout
Android:id="@+id/about_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
Android:weightSum="1" >
<LinearLayout
Android:id="@+id/about_layout1"
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_weight=".4"
Android:orientation="vertical" >
<ImageView
Android:id="@+id/view_image"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@drawable/about1">
</ImageView>
</LinearLayout>
<LinearLayout
Android:id="@+id/about_layout2"
Android:layout_width="fill_parent"
Android:layout_height="0dp"
Android:layout_weight=".6"
Android:orientation="vertical" >
<TextView
Android:id="@+id/textView1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:text="SIGNATURE LANDMARK OF MALAYSIA-SINGAPORE CAUSEWAY"
Android:textColor="#000000"
Android:gravity="center"
Android:padding="18dp"
Android:textStyle="bold"
Android:textAppearance="?android:attr/textAppearance" />
<ScrollView
Android:layout_width="fill_parent"
Android:layout_height="match_parent"
Android:fillViewport="false"
Android:orientation="vertical"
Android:scrollbars="none"
Android:layout_marginBottom="10dp"
Android:padding="10dp" >
<TextView
Android:id="@+id/description"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:textColor="#000000"
Android:text="TextView" />
</ScrollView>
</LinearLayout>
</LinearLayout>
TextView(mDots)の配列を含む線形レイアウトを作成できます。 textViewをドットとして表すには、コードでこのHTMLソースを提供します。私のコードを参照してください。 Youtube Channel TVAC Studioからこの情報を得ました。ここにコード: `
addDotsIndicator(0);
viewPager.addOnPageChangeListener(viewListener);
}
public void addDotsIndicator(int position)
{
mDots = new TextView[5];
mDotLayout.removeAllViews();
for (int i = 0; i<mDots.length ; i++)
{
mDots[i]=new TextView(this);
mDots[i].setText(Html.fromHtml("•")); //HTML for dots
mDots[i].setTextSize(35);
mDots[i].setTextColor(getResources().getColor(R.color.colorAccent));
mDotLayout.addView(mDots[i]);
}
if(mDots.length>0)
{
mDots[position].setTextColor(getResources().getColor(R.color.orange));
}
}
ViewPager.OnPageChangeListener viewListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int
positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
addDotsIndicator(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
};`