ループでインスタンス化するカスタム コンポーネントがあり、それらすべてに同じスタイルを適用する必要があります。これはカスタム コンポーネント (具体的には LinearLayout のサブクラス) であるため、コンポーネントのレイアウト XML のルート タグがマージであるため、XML にスタイル属性を設定することはできません (ビュー階層が狂ってしまうのを防ぐため)。私はこれを見つけました:
style.xml から AttributeSet を作成するにはどうすればよいですか?
これは私の問題をほぼ正確に説明しています。答えだけが役に立たない - 私の R.java は新鮮で、スタイルはそこにあります。getResources().getXml(R.style.my_style) が /res/values/styles.xml ファイルを実際に見ていないことが問題だと思いますか?
私は Scala を使用しているため、構文は少し... より優れています。私のコンポーネント:
class MyLinearLayout(object : MyDatabaseObject, context : Context, attrs : AttributeSet = null)
extends LinearLayout(context, attrs) {
// Shows and interacts with the data in object
}
アクティビティで:
val componentStyle = Xml.asAttributeSet(getResources.getXml(R.style.my_style))
for (obj <- dbResults) viewGroup.addView(new MyLinearLayout(obj, this, componentStyle))
そして、その最初の行で Resources.NotFoundException がスローされます。スタイル自体は残りの部分と一緒に res/values/styles.xml にあり、さまざまなアクティビティで LinearLayouts に適用されるため、問題はありません。