10

当您想访问某个layout.xml文件中的自定义视图时,您有两种选择:

  1. 该视图在它自己的类中。然后你做<package.name.MyView android:layout_width= ... />
  2. 视图是一个内部类:<view class="package.name.OuterClass$MyView" android:layout_width= ... />

现在我想在<PreferenceScreen>. 第一种方法效果很好,但我想将所有自定义Preference类放在我的 PreferenceActivity 中。我试过<Preference class="package.name.OuterClass$MyPreference" ... />(也用'.'而不是'$')以及<package.name.OuterClass.MyPreference ... />,但都失败了。

有人有想法吗?

4

1 回答 1

3

在处理Views膨胀时,LayoutInflater寻找“视图”->“类”的情况:

View createViewFromTag(View parent, String name, AttributeSet attrs) {
    if (name.equals("view")) {
        name = attrs.getAttributeValue(null, "class");
    } ...

偏好PreferenceInflater没有,所以这是“类”的情况。

它在其createItem()方法中使用反射,这可能就是第一种情况适合您的原因。

于 2013-07-08T22:06:40.247 回答