Vì vậy, đây là vấn đề của tôi: Tôi đã tạo thành phần tùy chỉnh mở rộng Button
Nút này có một thuộc tính được gọi là testAttr
.Tạo kiểu mặc định với các thuộc tính tùy chỉnh
<declare-styleable name="TestButton" parent="@android:style/Widget.Button">
<attr name="testAttr" format="reference|color"/>
</declare-styleable>
Tôi muốn tạo ra một phong cách mặc định cho thành phần này vì vậy tôi thêm này:
<declare-styleable name="TestTheme">
<attr name="testStyle" format="reference"/>
</declare-styleable>
<style name="Theme.AppTheme" parent="@android:style/Theme" >
<item name="testStyle">@style/test</item>
</style>
Vấn đề là tôi muốn sử dụng cả hai thuộc tính android và của riêng tôi như thế này, mà không phải là làm việc:
<style name="test" parent="@android:style/Widget.Button">
<item name="android:background">#FF0000</item>
<item name="testAttr">testText</item>
</style>
tôi đặt phong cách mặc định trong phần tùy chỉnh của tôi như sau:
public myButton(final Context context) {
this(context, null);
}
public myButton(final Context context, final AttributeSet attrs) {
this(context, attrs, R.styleable.TestTheme_testStyle);
}
public myButton(final Context context, final AttributeSet attrs, final int defStyle) {
super(context, attrs, defStyle);
final TypedArray array = context.obtainStyledAttributes(
attrs,
R.styleable.TestButton,
defStyle,
R.style.testDefault);
final String s = array.getString(R.styleable.TestButton_testAttr);
setText(s);
array.recycle();
}
Và dĩ nhiên tôi đặt Theme trong biểu hiện:
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppTheme" >
<activity
android:name=".TestActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Nó luôn luôn rơi trở lại với phong cách mặc định đối với một số lý do và không bao giờ lặn các thuộc tính android. Vì vậy, tôi đang thiếu một cái gì đó ở đây?
tôi đang làm một cái gì đó tương tự ở đây !!! http://stackoverflow.com/questions/17103894/overriding-referenced-style-attributes – toobsco42