常见的情况有:
- 获取view的宽高
- listview自动选中第一条记录
- …
以上的情况,在Activity的onCreate或者Fragment的onCreateView中,由于view还未绘制完成,都无法实现。
此时可以利用View.post(Runnable action)方法实现。
例如:
获取button的宽高
final Button btnTest = (Button)findViewById(R.id.button); btnTest.post(new Runnable() { @Override public void run() { int width = btnTest.getWidth(); int height = btnTest.getHeight(); } });
自动选中ListView的第一项
ListView lv = (ListView) findViewById(R.id.listview); lv.post(new Runnable() { @Override public void run() { if (lv.getCount() > 0){ mSelectPos = 0; View item = lv.getChildAt(mSelectPos); item.setBackgroundColor(getResources().getColor(R.color.selected)); } } });