1. 程式人生 > >Android 動態設定View的id——setId

Android 動態設定View的id——setId

問題

動態給自定義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);

這裡寫圖片描述