在我的安卓应用程序中,我有一个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