在安卓中强制渲染ViewPager



在我的安卓应用程序中,我有一个Button,它通过更改存储在SharedPreference中的颜色来改变ViewPager背景的颜色。

@Override
public void onClick(View v) {
    sPref=getPreferences(MODE_PRIVATE);
    int color=sPref.getInt("BACKGROUND", Color.DKGRAY);
    if (color==Color.DKGRAY){
        SharedPreferences.Editor sEdit= sPref.edit();
        sEdit.putInt("BACKGROUND", Color.RED);
        sEdit.commit();
    }
    else{
        SharedPreferences.Editor sEdit= sPref.edit();
        sEdit.putInt("BACKGROUND", Color.DKGRAY);
        sEdit.commit(); 
    }
}

背景颜色在我的ViewPager中像这样改变

@Override
public Object instantiateItem(ViewGroup container, int position) {
    LayoutInflater inflater = (LayoutInflater) container.getContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View page= inflater.inflate(R.layout.card , null);
    TextView tc= (TextView) page.findViewById(R.id.txtCard);
    tc.setText("Card "+position);
    tc.setBackgroundColor(sPref.getInt("BACKGROUND", Color.DKGRAY));
    ((ViewPager)container).addView(page,0);
    return page;
}

我的问题:当我更改ViewPager的背景颜色时,由于在我更改背景时已经加载了当前页面和周围的 2 页,因此它们不会显示背景变化。所以我想强制渲染它们。请帮忙吗?

请注意,

您实际上是在更改寻呼机托管的单个页面的bg颜色,而不是ViewPager本身。 如果要更改 ViewPager 的颜色,只需设置其颜色并确保您的页面(卡片)具有透明背景;或者,听从 Givi 的建议并致电notifyDataSetChanged()并在您的适配器中应用更新的 bg 颜色。

您可以:获取加载页面的视图并自行设置背景。(使用: YOUR_ADAPTER.getItem(position)

或者,只需尝试: 适配器上的notifyDataSetChanged

最新更新