我正在开发一个支持Image和Text的Android按钮。这可以使用Button和复合drawable来实现,但这会产生缩放问题。
我希望窗口小部件可以在xml中声明,具有类似的内容
<ImageTextButton
android:layout_width="wrap_content"
android:layout_height="50dp"
android:src="@drawable/my_drawable"
android:text="@string/my_text"
android:textSize="12sp" />
这里的问题是:我已经画了按钮,它向右缩放。我的意思是我知道如何获得android:src
它似乎工作得很好。但是当我试图让textSize出错时。
我读了这样的属性:
int attrsArray[] = { android.R.attr.src, android.R.attr.textSize };
TypedArray ta = getContext().obtainStyledAttributes(attrs, attrsArray);
for (int i = 0; i < ta.getIndexCount(); i++) {
switch (i) {
case 0:
int srcId = ta.getResourceId(i, 0);
srcBitmap = BitmapFactory.decodeResource(getResources(), srcId);
break;
case 1:
float textSize = ta.getDimension(i, 0);
if (textSize > 0) {
Log.i("IMAGEBUTTON", "SETTING CUSTOM SIZE");
textPaint.setTextSize(textSize);
}
break;
}
}
但是ta.getIndexCount()
它只返回1,所以切换永远不会进入case 1
我做错了什么?是否有必要将我的自定义视图声明为可样式?如果是这种情况,我可以不创建新的命名空间吗?
修改
我解决了我的问题,打电话给super.getTextSize()
。这可以假设我继承自TextView
。现在我很好,但我想知道为什么我的代码不起作用。如果我不继承TextView
并希望添加更多Android属性,该怎么办?
答案 0 :(得分:0)
我不确定你要做什么,但是在这里的代码中你总是以0开始for循环,所以总是会进入“case 0”,永远不会进入case 1