在我的Android应用中,我有一个Button
,可以通过更改ViewPager
中存储的颜色来更改SharedPreference
背景的颜色。
@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页已加载,因此它们不会显示更改在背景中。所以我想强制渲染它们。有什么帮助吗?
答案 0 :(得分:0)
您可以:
获取已加载页面的视图并自行设置背景。 (使用:YOUR_ADAPTER.getItem(position)
)
或者,只需尝试:
适配器上的notifyDataSetChanged
答案 1 :(得分:0)
请注意,您实际上正在更改寻呼机托管的单个页面的bg颜色,而不是ViewPager本身。如果您想更改ViewPager的颜色,只需设置其颜色并确保您的页面(卡片)具有透明背景;或者,听取Givi的建议并致电notifyDataSetChanged()
并在适配器中应用更新的bg颜色。