在xml文件中实例化一个内部类(Preference)

当你想在一些layout.xml文件中访问自定义视图时,你有两个select:

  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 ... /> ,但是都失败了。

有没有人有一个想法?

Solutions Collecting From Web of "在xml文件中实例化一个内部类(Preference)"

当处理Views膨胀时, LayoutInflater查找“视图” – >“类”情况:

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

Preference的PreferenceInflater没有,所以这是“类”的情况下。

它在createItem()方法中使用reflection,这可能就是为什么第一种情况适合你。