同様のアプリケーションのセットがあります。共通のリソースとコードをライブラリ プロジェクトに抽出すると、アプリケーションは必要なものをオーバーライドするだけです。私のライブラリには、次のスタイルが定義されています。
<style name="ListItemText">
<item name="android:layout_toRightOf">@id/preview_image</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">@dimen/previewTextSize</item>
</style>
ご覧のとおり、android:layout_toRightOf属性が含まれているため、このスタイルは ListView 行のテキストに適用され、その行の画像の右側に表示されます。
ただし、私のアプリケーションの 1 つで、画像の下にテキストを表示したいと考えています。ListItemText属性値をオーバーライドandroid:layout_toRightOfして に置き換えるには、そのアプリケーションのスタイルをどのように定義する必要がありますandroid:layout_belowか?
私がそれを次のように定義すると:
<style name="ListItemText">
<item name="android:layout_below">@id/preview_image</item>
</style>
画像の右と下にテキストを表示し、ライブラリとアプリケーション スタイル XML の両方の属性を効果的にまとめます。
ps:私の問題の解決策の 1 つは、スタイルを取り除き、android:layout_toRightOf代わりにレイアウト xml に移動することです。次に、ターゲット アプリケーションで、このレイアウトを再定義/オーバーライドできます。しかし、属性をオーバーライドするためのよりシンプルで簡単な方法を提供できるため、スタイルベースのソリューションを探しています。
(継承されたスタイルをparent属性で使用することもできますが、これにはアプリケーションでレイアウトのオーバーライドが必要になるため、これは回避しようとしています)。