我是 Android 新手。 不是超级新,但足够新。
我想扩展一个 ToggleButton,这样我就可以编写它的外观。
为了做到这一点,我在 attrs.xml 中定义了三个属性。 这是我的第一个问题。 我希望能够通过标记在我的控件中指定图像资源。 我正在尝试为此创建一个自定义属性,但我觉得我失败了。 请参阅下面的 togbtn_image。
自定义属性:
<resources>
<declare-styleable name="BBI_Droid">
<attr name="togbtn_image" format="reference" />
<attr name="togbtn_bold_description" format="string"/>
<attr name="togbtn_minor_description" format="string"/>
</declare-styleable>
</resources>
目标是将 togbtn_image 指定为如下所示:
togbtn_image =“@drawable/an_icon”
我的自定义切换按钮中有类似的东西吗? (其中 iv 是 ImageView)
iv.setImageResource(a.getResourceId(R.styleable.BBI_Droid_togbtn_image, -1));
然后我需要在自定义视图的类中加载它,但我不太确定如何访问它。
我知道我想做什么,但我缺少将所有内容放在一起的链接。 希望有人能帮助我。
public class togbtn_with_description extends ToggleButton {
private View mValue;
private ImageView mImage;
public togbtn_with_description(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.BBI_Droid, 0, 0);
String titleText = a.getString(R.styleable.BBI_Droid_togbtn_bold_description);
String minorText = a.getString(R.styleable.BBI_Droid_togbtn_minor_description);
// HERE I WOULD LIKE TO ACCESS THAT togbtn_image resource AND ASSIGN IT TO AN IMAGEVIEW
// THAT IS TO BE CREATED AS PART OF THIS TOGGLE BUTTON. ONCE I GET THAT RESOURCE,
// I'LL THEN SETUP THE LAYOUT FOR THIS TOGGLEBUTTON
a.recycle();
// more stuff
}
}
我离基地太远了吗? 顺便说一句,我有很强的 WPF 背景,所以我觉得这可能有点描绘了我的观点。
想通了...
最终我所做的是创建一个自定义布局并将其填充到relativelayout自定义视图而不是切换按钮中。
iv.setImageResource(a.getResourceId(R.styleable.BBI_Droid_togbtn_image, -1));
设置值。
您可以使用引用属性引用 - 如果它引用另一个资源 ID(例如“@color/my_color”、“@layout/my_layout”)