問題:android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a
我的場景是
LinearLayout.LayoutParams params11
= new LinearLayout.LayoutParams(264, LinearLayout.LayoutParams.WRAP_CONTENT);
bt21.setLayoutParams(params11);
更新設置UI
問題的意思是更新UI阻塞了主線程
解決方法: 利用runOnUiThread,下面是我一個例子,關於runOnUiThread的用法,自行查詢
runOnUiThread(new Runnable() {
@Override
public void run() {
//更改UI;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//TODO todo somthing here
System.out.println("寬度" + bt1.getWidth());
LinearLayout.LayoutParams params1
= new LinearLayout.LayoutParams(bt1.getWidth(),
LinearLayout.LayoutParams.WRAP_CONTENT);
bt2.setLayoutParams(params1);
}
},1 * 1000); //延遲10秒執行
}
});