Alt*_*cho 3 android declare-styleable
如何在属性中接受方法作为值?就像在视图的 onClick 属性中一样:
<Button android:onClick="onClickMethod"/>
Run Code Online (Sandbox Code Playgroud)
如何定义接受方法的自定义属性?
我知道我们<declare-styleable>在资源中使用,但我们如何让它接受方法?
Android 使用反射来查找方法的名称并调用它。您可以在从第 4209 行开始的源代码中看到一个示例 https://github.com/android/platform_frameworks_base/blob/master/core%2Fjava%2Fandroid%2Fview%2FView.java#L4209
case R.styleable.View_onClick:
if (context.isRestricted()) {
throw new IllegalStateException("The android:onClick attribute cannot "
+ "be used within a restricted context");
}
final String handlerName = a.getString(attr);
if (handlerName != null) {
setOnClickListener(new DeclaredOnClickListener(this, handlerName));
}
break;
Run Code Online (Sandbox Code Playgroud)
如果方法名称不为空,它会创建一个新DeclareOnClickListener()类并使用方法名称对其进行初始化。
的DeclareOnClickListener()类是在线路4435定义
https://github.com/android/platform_frameworks_base/blob/master/core%2Fjava%2Fandroid%2Fview%2FView.java#L4435
| 归档时间: |
|
| 查看次数: |
1325 次 |
| 最近记录: |