10

一部のファイルでカスタム ビューにアクセスする場合layout.xml、次の 2 つのオプションがあります。

  1. ビューは独自のクラスにあります。その後、あなたは<package.name.MyView android:layout_width= ... />
  2. ビューは内部クラスです:<view class="package.name.OuterClass$MyView" android:layout_width= ... />

今、私は同じことを a の中でやりたいと思っています<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 に答える