这是我的主要xml布局的一部分。我有一个复合视图(SingleDrinkView),我想为每个< SingleDrinkView'设置一个不同的src用于我的图像按钮。
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="100dp"
android:layout_below="@id/profilePhoto"
android:background="#d0d0d0"
android:orientation="horizontal" >
<com.ziepa.drinkparty.SingleDrinkView
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
custom:drinkImage="@drawable/beer_icon"
/>
<com.ziepa.drinkparty.SingleDrinkView
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
custom:drinkImage="@drawable/shot_icon"
/>
<com.ziepa.drinkparty.SingleDrinkView
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
custom:drinkImage="@drawable/wine_icon"
/>
</LinearLayout>
我添加了自定义属性,但我无法找到将其设置为我的图片按钮的方法:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageButton
android:id="@+id/singleDrinkImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:padding="0dp"
android:scaleType="centerInside"
android:src="???" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="x0"
android:textColor="#000"
android:textSize="32sp" />
</RelativeLayout>
所以我最终尝试通过获取此自定义属性来设置它:
case R.styleable.SingleDrinkView_drinkImage:
//This string contains "res/drawable-xhdpi/beer_icon.png"
String drinkImage = a.getString(attr);
ImageButton imageBt = (ImageButton) this.findViewById (R.id.singleDrinkImage);
//createFromPath returns null.
imageBt.setImageDrawable(Drawable.createFromPath(drinkImage));
break;
因此,我现在不知道该怎么做,我也不确定是否有更聪明的方法。我想要使用不同的可设置的自定义小部件。属性可以这么说。
答案 0 :(得分:0)
好吧,所以我只是想出了在attrs.xml中而不是使用format = string,它是格式=整数。
然后在switch的情况下,所有必要的是使用getDrawable方法而不是getString。这正确地格式化了xml中drawable的资源ID。
switch (attr)
{
case R.styleable.SingleDrinkView_drinkImage:
Drawable drinkImage = a.getDrawable(attr);
ImageButton imageBt = (ImageButton)this.findViewById(R.id.beerImageButton);
imageBt.setImageDrawable(drinkImage);
break;
...
此处提供更多详细信息:Format attribute value “android:drawable” not valid