Как изменить фон ImageView пользовательской группы представлений при пролистывании пейджера просмотра?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как изменить фон ImageView пользовательской группы представлений при пролистывании пейджера просмотра?

Сообщение Anonymous »

Я пытаюсь изменить фон ImageView пользовательской группы представлений, проводя пальцем по пейджеру просмотра, но это не работает, фон ImageView не обновляется. Я не знаю, почему. Проблема возникает, когда я хочу изменить фон ImageView внутри пользовательской группы представлений. В действии у меня есть следующий код:
публичный класс example5 расширяет AppCompatActivity {
private ViewPager view_pager;
private CustomPagerAdapter pagerAdapter;
private CustomViewGroup customViewGroup

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example5);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

view_pager = findViewById(R.id.view_pager);

view_pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
public void onPageSelected(int position) {
The problem here when I want to change the background of ImageView inside CustomViewGroup
customViewGroupOneImage.changeImage();
}

@Override
public void onPageScrollStateChanged(int state) {

}
});

pagerAdapter = new CustomPagerAdapter(this);
view_pager.setAdapter(pagerAdapter);

customViewGroup = new CustomViewGroup(this);
}
}


Моя пользовательская группа представлений здесь
public class CustomViewGroup extends ViewGroup {

private Context context;

public CustomViewGroupOneImage(Context context) {
super(context);
init(context);
}

public CustomViewGroupOneImage(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}

public CustomViewGroupOneImage(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {

int width = getWidth();
int height = getHeight();

View child = getChildAt(0);

measureChild(child, width, height);

child.layout(0, 0, child.getMeasuredWidth(), child.getMeasuredHeight());
}

public void changeImage(){

ImageView child = (ImageView) getChildAt(0);

child.setBackgroundResource(R.drawable.color2);
}

private void init(Context context){
this.context = context;
ImageView imageView = new ImageView(context);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
imageView.setLayoutParams(params);
imageView.setBackgroundResource(R.drawable.color1);
addView(imageView);
}
}

Моя схема деятельности








Однако, если у меня есть следующий макет, это работает при пролистывании пейджера просмотра и изменении фона ImageView.










И позже для этого изменим прослушиватель viewpager
public class Example5 extends AppCompatActivity {

private ViewPager view_pager;
private ImageView img_image;
private CustomPagerAdapter pagerAdapter;
private CustomViewGroup customViewGroup

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example5);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

view_pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
public void onPageSelected(int position) {
img_image.setBackgroundResource(R.drawable.color2);

}

@Override
public void onPageScrollStateChanged(int state) {
}
});

img_image = findViewById(R.id.img_image);
img_image.setBackgroundResource(R.drawable.color1);

}
}



Подробнее здесь: https://stackoverflow.com/questions/489 ... ng-view-pa
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»