Android 動態設定View的id——setId
阿新 • • 發佈:2019-02-15
問題
動態給自定義view設定id,有時候會報錯,下面我將帶頭衝鋒(德邦跑錯場了。。。。)
AndroidStudio會報錯:
因為在sdk17(4.2.2)以上可以使用myView.setId(View.generateViewId())才行,為了相容,裡面的id必須使用靜態int型別。
解決的三種方法
1、sdk17(4.2.2以上)
//設定View.generateViewId()
simpleDraweeViewicon.setId(View.generateViewId());
2、寫在配置xml檔案裡
ids.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="layoutadd" type="id"/>
</resources>
程式碼中設定:
AppRelativelayout mRelative = new AppRelativelayout(mContext);
mRelative.setId(R.id.layoutadd);
3、神奇的註解幫你新增
將你所想定義的id按照下例寫在程式碼中:
@android.support.annotation.IdRes
int TAG1401 = 1000;
int TAG1402 = 1001 ;
int TAG1403 = 1002;
int TAG1404 = 1003;
int TAG1405 = 1004;
int TAG1406 = 1005;
int TAG1407 = 1006;
在想要設定id的地方直接設定:
AppRelativelayout mRelative = new AppRelativelayout(mContext);
mRelative.setId(TAG1401);