我在ListFragment中有这段代码:
TextView tv = (TextView) this.getListView().getChildAt(0);
tv.setBackgroundColor(getResources().getColor(R.color.White));
tv.setTextColor(getResources().getColor(R.color.OtherColor));
我想在onActivityCreated上编写此代码,但tv为null。
如果我在onListItemClick中编写此代码,它可以正常工作。
我想要的是不可能的吗?
代码:
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
String[] values = new String[] { getResources().getString(R.string.menu_partida),
getResources().getString(R.string.menu_acciones),
getResources().getString(R.string.menu_resultado) };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.list_item_menu, values);
setListAdapter(adapter);
}
答案 0 :(得分:0)
视图仅在所有“创建”回调执行后绘制,此事件没有回调。但是,你可以post()
一个Runnable到UI处理程序并实现相同的目的:
getListView().post(new Runnable() {
public void run() {
TextView tv = (TextView) this.getListView().getChildAt(0);
tv.setBackgroundColor(getResources().getColor(R.color.White));
tv.setTextColor(getResources().getColor(R.color.OtherColor));
}
}
但实际上,由于行布局在ListView中回收,因此此更改不会达到预期效果。 (滚动时会看到根除行为。)您应该创建一个自定义适配器,以便仅在position 0
更改行的布局。你可能会逃避Runnable,因为你只有三行,但最好的解决方案是扩展Adapter。