Tôi có một kịch bản trong đó tôi muốn thiết lập một Drawable
phụ thuộc vào chủ đề xác định.nguồn truy cập quy định tại chủ đề và attrs.xml android
Để giải thích điều này hơn nữa, đây là những gì tôi có trong mã:
\ res \ giá trị \ attrs.xml
<resources>
<declare-styleable name="AppTheme">
<attr name="homeIcon" format="reference" />
</declare-styleable>
</resources>
res \ giá trị \ styles.xml
<resources>
<style name="AppTheme" parent="android:style/Theme">
<item name="attr/homeIcon">@drawable/ic_home</item>
</style>
</resources>
AndroidManifest.xml
<application android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Vì vậy, khi bạn đã nhận thấy tôi đang xác định homeIcon attr tùy chỉnh và đặt giá trị thuộc tính trong AppTheme.
Khi tôi xác định thuộc tính này trong một XML layout và cố gắng truy cập vào nó nó hoạt động trơn tru
<ImageView android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="?attr/homeIcon" />
và ám chỉ rằng Drawable
ic_home trong một ImageView
.
Nhưng tôi không thể tìm ra cách để truy cập Drawable
lập trình.
Tôi cố gắng để làm điều này với một công trình xung quanh, bằng cách định nghĩa một người giữ LayerList Drawable
, mà kết quả trong nguồn không tìm thấy ngoại lệ:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="?attr/homeIcon" />
</layer-list>
Tóm tắt tôi muốn truy cập các
Drawable
định nghĩa trong một tùy chỉnh được xác địnhTheme
theo chương trình.
Vui lòng đánh giá nếu nó phù hợp với bạn. – dmaxi
Cảm ơn bạn :) nó đã hoạt động! – Shardul
Làm việc cho tôi để ..! Cảm ơn! :) – DroidBee