gpt4 book ai didi

java - 使 Button 对 ViewPager 上的第一张图像不可见,而对其余图像可见,onClickListener?

转载 作者:行者123 更新时间:2023-11-30 01:31:58 24 4
gpt4 key购买 nike

我有一个 ViewPager 设置,其中包含一组可在其中滑动的图像。在底部我有一个按钮,允许用户选择最适合他们的图像。我想让按钮在数组的第一个图像上不可见,然后在第二个图像被刷到后让按钮可见。我尝试了许多我能想到的不同解决方案,但目前感到困惑。我可以通过许多不同的途径使按钮不可见,例如在 xml 文件中将其可见性设置为不可见,以及通过 onCreate 中的 if...if else 语句,得出的结论是我可能需要某种 onClickListener。这是我当前的代码

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 中,它可以将按钮设置为不可见,但一旦用户滑动到第二张图像,它就不会恢复可见。我觉得 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);
}
}

最佳答案

利用OnPageChangeListener .仅在 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) {

}
});

关于java - 使 Button 对 ViewPager 上的第一张图像不可见,而对其余图像可见,onClickListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35612011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com