回答編集履歴

1

回答

2019/12/02 13:12

投稿

kakajika
kakajika

スコア3131

test CHANGED
@@ -1,5 +1,121 @@
1
- attrリソースはXML上で利用できるカスタム属性を定義るたもので、質問者さんが想像されているような使方はできせん
1
+ drawableリソースから利用ためのカスタム属性をattrリソースで定義してテーマで変更できようにしいなら、以下のような実装になると思いま
2
2
 
3
3
 
4
4
 
5
+ - drawable/shape.xml
6
+
7
+
8
+
9
+ ```xml
10
+
11
+ <?xml version="1.0" encoding="utf-8"?>
12
+
13
+ <shape
14
+
15
+ xmlns:android="http://schemas.android.com/apk/res/android"
16
+
17
+ android:shape="rectangle">
18
+
19
+ <solid
20
+
21
+ android:color="?solidColor"/>
22
+
23
+ <corners
24
+
25
+ android:topRightRadius="?radius"
26
+
27
+ android:bottomRightRadius="?radius"
28
+
29
+ android:bottomLeftRadius="?radius"
30
+
31
+ android:topLeftRadius="?radius"/>
32
+
33
+ <stroke
34
+
35
+ android:width="?strokeWidth"
36
+
37
+ android:color="?strokeColor"/>
38
+
39
+ </shape>
40
+
41
+ ```
42
+
43
+
44
+
45
+ - values/attrs.xml
46
+
47
+
48
+
49
+ ```xml
50
+
51
+ <?xml version="1.0" encoding="utf-8"?>
52
+
53
+ <resources>
54
+
55
+ <declare-styleable name="test">
56
+
57
+ <attr name="strokeColor" format="color" />
58
+
59
+ <attr name="strokeWidth" format="dimension" />
60
+
61
+ <attr name="solidColor" format="color" />
62
+
63
+ <attr name="radius" format="dimension" />
64
+
65
+ </declare-styleable>
66
+
67
+ </resources>
68
+
69
+ ```
70
+
71
+
72
+
73
+ - values/styles.xml
74
+
75
+
76
+
77
+ ```xml
78
+
79
+ <?xml version="1.0" encoding="utf-8"?>
80
+
81
+ <resources>
82
+
83
+ <style name="ButtonBackground1">
84
+
85
+ <item name="strokeColor">#ED586D</item>
86
+
87
+ <item name="strokeWidth">2dp</item>
88
+
89
+ <item name="solidColor">#ffffff</item>
90
+
91
+ <item name="radius">30dp</item>
92
+
93
+ </style>
94
+
95
+ </resources>
96
+
97
+ ```
98
+
99
+
100
+
101
+ - レイアウト
102
+
103
+
104
+
105
+ ```xml
106
+
107
+ <Button
108
+
109
+ ...
110
+
111
+ android:background="@drawable/shape"
112
+
113
+ android:theme="@style/ButtonBackground1"
114
+
115
+ />
116
+
117
+ ```
118
+
119
+
120
+
5
- ご提示コードはいまいちやりいこが見えないので、そちらを明記していただければ他の方法をアドバイスできるかもしれません
121
+ ただし、API21未満だとdrawableリソースからcolor参照がきなかったと思うので、その点だけご注意ください