1

View2つの標準ビューを含むカスタムを作成しています。含まれている各ビューのデフォルトのスタイルと、含まれている各ビューのカスタムスタイルをユーザーが指定できるカスタム属性があります。デフォルトのスタイルとカスタムスタイルをうまく取得し、含まれている各ビューのコンストラクターの3番目のパラメーターとして正しいスタイルIDを渡すことができます。私が苦労しているのは、適切なスタイルにViewGroup.LayoutParams基づいて、これらの含まれているビューのをandroid:layout_height生成することです。android:layout_width

コンストラクターを使用する必要があるようです。AttributeSetドキュメントには、ビアを取得する必要があると書かれています。ViewGroup.LayoutParams(Context, AttributeSet)AttributeSet

XmlPullParser parser = resources.getXml(myResouce);  
AttributeSet attributes = Xml.asAttributeSet(parser);

Resources$NotFoundException...しかし、それはそれからの警告とともにをスローframeworks/base/libs/utils/ResourceTypes.cppRequesting resource %p failed because it is complexます。

したがって、私の質問は、特異性の降順で:

  1. XmlPullParser「複雑な」要素で動作する を取得する方法はありますか?
  2. 要素 AttributeSetに対応するを取得する他の方法はありますか?<style>
  3. 特定のスタイルの値と値にLayoutParameters注意を払うを構築する他の方法はありますか?layout_heightlayout_width
4

1 に答える 1

3
    static ViewGroup.LayoutParams layoutFromStyle(Context context,
        int style) {
      TypedArray t = context.getTheme().obtainStyledAttributes(
              null,
              new int[] { android.R.attr.layout_width,
                      android.R.attr.layout_height }, style, style);
      try {
          int w = t
                  .getLayoutDimension(0, ViewGroup.LayoutParams.WRAP_CONTENT);
          int h = t
                  .getLayoutDimension(1, ViewGroup.LayoutParams.WRAP_CONTENT);
          return new ViewGroup.LayoutParams(w, h);
      } finally {
          t.recycle();
      }
    }
于 2012-09-18T00:47:21.683 に答える