Я разрабатываю кнопку 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
Что я делаю не так? Нужно ли объявлять мой пользовательский вид как стильный? Если это так, могу ли я сделать это без создания нового пространства имен?
ИЗМЕНИТЬ
Я решил свою проблему, позвонив в super.getTextSize()
. Это работает, если я наследую от TextView
. На данный момент я в порядке, но я хочу знать, почему мой код не работает. Что делать, если я не наследую TextView
и хочу добавить больше атрибутов Android?