私は次の形を描くことができました:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="#222222" />
<stroke android:width="1dip" android:color="?attr/colorPrimary"/>
<corners
android:topLeftRadius="58dp"
android:topRightRadius="58dp"
android:bottomRightRadius="58dp"
android:bottomLeftRadius="58dp">
</corners>
<padding
android:left="4dp"
android:top="4dp"
android:right="4dp"
android:bottom="4dp" />
</shape>
この行のテーマから色属性を設定しています:
<stroke android:width="1dip" android:color="?attr/colorPrimary"/>
プロジェクトは問題なくコンパイルできますが、デバイスでの実行時に次の問題が発生しました。
android.view.InflateException: Binary XML file line #119: Error inflating class TextView
...
Caused by: android.content.res.Resources$NotFoundException: File
res/drawable/bordered_green_solid_textview.xml from drawable resource ID #0x7f07006a
?attr / colorPrimaryを置き換えて、たとえば#222222のような16進色を使用すると、問題なく実行されます。
ドローアブルで問題なくattrsを使用するにはどうすればよいですか?
PS:私の最小APIレベル19
私のTextView:
<TextView android:id="@+id/imagesCounter"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginLeft="35dp"
android:layout_marginBottom="35dp"
android:background="@drawable/bordered_green_solid_textview"
android:gravity="center"
android:text="16"
android:textColor="?attr/colorPrimary"
android:textSize="9sp"
app:layout_constraintBottom_toBottomOf="@+id/imageBorder"
app:layout_constraintStart_toStartOf="@+id/imageBorder"
tools:text="67" />
結局のところ、19のようなAPIレベルの場合、唯一可能な方法は、アプリケーションのさまざまなテーマに対して個別のドローアブルを作成することであることがわかりました。
したがって、まず最初に、values /attrs.xmlでドローアブルの新しい属性を宣言する必要があります。
<?xml version="1.0" encoding="utf-8"?>
<resources>
...
<attr name="nav_bar_header_drawable" format="reference"/>
...
</resources>
次に、テーマでこの属性にドローアブルを設定する必要があります。これで、好きな場所で参照できます。
<style name="Theme.MyDarkMaterialDesign" parent="Theme.MaterialComponents.NoActionBar">
...
<item name="nav_bar_header_drawable">@drawable/side_nav_bar</item>
...
</style>
これはAPI19で完全に機能し、以下の場合があります(19 API以上しか必要ないためテストしませんでした)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加