Java 是否使ViewPager上的第一个图像的按钮不可见,其余图像的按钮可见,onClickListener?
我有一个ViewPager设置,其中有一组图像可以在其中滑动。在底部我有一个按钮,允许用户选择最适合他们的图像。我希望在数组的第一个图像上使按钮不可见,然后在第二个图像被刷到后使按钮可见。我尝试过许多我能想到的不同的解决方案,但目前我被难倒了。我可以通过许多不同的途径使按钮不可见,例如在xml文件中将其可见性设置为不可见,还可以通过onCreate中的if…if else语句使按钮不可见,并得出结论,我可能需要某种onclick侦听器。这是我目前的代码Java 是否使ViewPager上的第一个图像的按钮不可见,其余图像的按钮可见,onClickListener?,java,android,android-fragments,Java,Android,Android Fragments,我有一个ViewPager设置,其中有一组图像可以在其中滑动。在底部我有一个按钮,允许用户选择最适合他们的图像。我希望在数组的第一个图像上使按钮不可见,然后在第二个图像被刷到后使按钮可见。我尝试过许多我能想到的不同的解决方案,但目前我被难倒了。我可以通过许多不同的途径使按钮不可见,例如在xml文件中将其可见性设置为不可见,还可以通过onCreate中的if…if else语句使按钮不可见,并得出结论,我可能需要某种onclick侦听器。这是我目前的代码 public class MainActi
public class MainActivity extends AppCompatActivity {
ViewPager viewPager;
// Method for "That's Me" button, stores selected motivator choice
public void thatsMeClick(View view) {
Intent intent = new Intent(MainActivity.this, PhysicalCondition.class);
startActivity(intent);
SharedPreferences sharedPreferences = this.getSharedPreferences("com.elevenfifty.vali.challengeaccepted",
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("motivator", viewPager.getCurrentItem());
editor.apply();
int myIntValue = sharedPreferences.getInt("motivator", -1);
Log.i("motivator", Integer.toString(myIntValue));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Allows images to fill entire screen including the notification bar area
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
setContentView(R.layout.activity_main);
ImageAdapter adapter = new ImageAdapter(this);
viewPager = (ViewPager) findViewById(R.id.view_pager);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(0);
viewPager.setPageTransformer(true, new ZoomOutPageTransformer());
PageIndicator circleIndicator = (CirclePageIndicator) findViewById(R.id.circle_indicator);
circleIndicator.setViewPager(viewPager);
}
}
我曾尝试将其添加到onCreate中,onCreate用于将按钮设置为不可见,但一旦用户滑动到第二个图像,它就不会恢复可见状态。我觉得onClickListener可以解决这个问题,但我不确定如何让它正常工作,我尝试了几种不同的方法
Button thatsMe = (Button) findViewById(R.id.thats_me_button);
if (viewPager.getCurrentItem() == 0) {
thatsMe.setVisibility(View.INVISIBLE);
} else if (viewPager.getCurrentItem() > 0) {
thatsMe.setVisibility(View.VISIBLE);
}
我试着为onClickListener做一些类似的事情,但是没有成功,我希望能得到一些关于如何解决这个问题的帮助,谢谢
public void onClick (View view) {
final Button thatsMe = (Button) findViewById(R.id.thats_me_button);
thatsMe.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (viewPager.getCurrentItem() != 0) {
thatsMe.setVisibility(View.VISIBLE);
}
}
});
}
这是sagits要求我添加的ImageAdapter代码
public class ImageAdapter extends PagerAdapter {
Context context;
// Array of images used for Viewpager
private int[] images = new int[]{R.drawable.mot, R.drawable.mogy,
R.drawable.hife, R.drawable.loot, R.drawable.roel,
R.drawable.crish, R.drawable.surk};
ImageAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return images.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setImageResource(images[position]);
container.addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((ImageView) object);
}
}
利用。仅在OnCreate中设置将不起作用,因为它将只被调用一次,而不是在页面滚动时调用
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if(position>0){
thatsMe.setVisibility(View.VISIBLE);
}
else {
thatsMe.setVisibility(View.INVISIBLE);
}
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
添加您的ImageAdapter代码。非常感谢,这非常有效。我对Android开发还是相当陌生,完全忘记了OnPageChangeListener。