Я разрабатываю Android-кнопку, которая будет поддерживать как изображение, так и текст. Это может быть достигнуто с помощью кнопки и составной схемы, но это имеет проблемы с масштабированием.Расширение Просмотр и добавление атрибутов xml с Android
Я хочу, чтобы виджет может быть объявлен в 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
Что я делаю неправильно? Нужно ли объявлять мое пользовательское представление как стиль? Если это так, могу ли я сделать это без создания нового пространства имен?
EDIT
я решил мою проблему сделать вызов super.getTextSize()
. Это работает, если я наследую от TextView
. На данный момент я хороший, но я хочу знать, почему мой код не работает. Что делать, если я не наследую от TextView
и хочу добавить больше андроидных атрибутов?
It будет, если 'ta.getIndexCount()' результат будет больше 1. Которое предполагается, потому что я получаю 2 атрибута из AttributeSet –