0

私は Android プロジェクトに取り組んでおり、ウィンドウ タイトルの背景スタイルを取得してから背景色/ドローアブルを抽出しようとしています (そのため、それらをカスタム タイトルバー レイアウトに適用できます)。このコードを使用して、スタイルの TYPE_REFERENCE に到達できました。

    TypedValue a = new TypedValue();
            getTheme().resolveAttribute(android.R.attr.windowTitleBackgroundStyle, a, true);
            if(a.type == TypedValue.TYPE_REFERENCE){
    // GOES IN HERE
// Drawable d = getResources().getDrawable(a.resourceId); // THROWS A RESOURCES NOT FOUND EXCEPTION
    }

a が指しているリソースが何であるかをうまく理解し、そこから color/Drawable に移動する方法について、私は空白になっています (Google で簡単に 2 時間の呪文を試みたにもかかわらず)。どこかで XML で定義されたスタイルであると想定しています。実際にそのスタイルのプロパティ/属性/設定をプログラムで取得し、背景に添付された色/Drawable を取得するにはどうすればよいですか?

4

1 に答える 1

5

ああ、それを理解しました:

TypedValue a = new TypedValue();
getTheme().resolveAttribute(android.R.attr.windowTitleBackgroundStyle, a, true);
        if(a.type == TypedValue.TYPE_REFERENCE){
            TypedArray b = this.obtainStyledAttributes(a.resourceId, new int[]{
                    android.R.attr.background
            });
            b.getValue(0, a);
                        titleBar.setBackgroundResource(a.resourceid);
            b.recycle();
        }
于 2012-08-24T07:19:48.043 に答える