Фон текста виджета Android

У меня есть приложение с виджетом, но у меня возникли трудности с компоновкой виджета.

Основная идея, если виджет должен выглядеть как значок и иметь под ним небольшой текстовый тег, как любой другой значок на рабочем столе.

Я нашел один пример, который использует android: background для TextView и использует XML с возможностью рисования:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#AA111111"/>
<padding android:left="5dp" 
  android:right="5dp"
  android:bottom="1dp" 
  android:top="1dp" />
<corners android:radius="8dp" />
</shape>

Однако это не работает блестяще, текст просто не такой, как другие значки на рабочем столе, и когда вы поворачиваете телефон, часть текста обрезается!

Следующая проблема - выбор виджета, я использую ImageButton в качестве значка - с android: background, установленным на прозрачное изображение. Я использовал другой файл XML с возможностью рисования, который позволяет мне изменять изображение при выборе виджета. Однако я бы предпочел действие значка по умолчанию, когда квадрат вокруг значка становится оранжевым.

Как мне добиться этих двух эффектов - я знаю, что это возможно, так как приложение "счетчик непрочитанных смс" выполняет именно то, что я хочу!


person Scoobler    schedule 26.01.2010    source источник
comment
Я не согласен с этим ответом. Вам точно не стоит этого делать. Это обсуждалось здесь: http://stackoverflow.com/questions/2651631/android-home-screen-widget-icon-label-style/2652961#2652961   -  person Anthony Chatellier    schedule 24.04.2011


Ответы (1)


Я бы сделал что-то вроде:

<LinearLayout>
    <ImageView/>
    <TextView/>
</LinearLayout>

Фон LinearLayout будет <selector> он же StateListDrawable . Селектор должен указать прозрачный фон, который при выборе становится оранжевым.

LinearLayout также будет представлением, в котором вы должны установить свой PendingIntent on, чтобы пользователь мог щелкнуть в любом месте представления, и оно будет зарегистрировано как событие onClick.

Что касается проблем с макетом, вам просто нужно поиграть с макетом, чтобы изображение и текст выглядели как другие значки на главном экране. Я бы подумал, что было бы не так сложно получить горизонтально центрированный ImageView с горизонтально центрированным TextView под ним, а затем просто настроить размеры изображения и размер текста, пока они не будут выглядеть так же, как другие значки на главном экране.

Что касается проблемы, с которой вы сталкиваетесь при переключении в альбомный режим на главном экране, вам нужно будет предоставить альбомную версию вашего XML-файла макета, настроенную для правильного отображения в альбомном режиме. См. Мой ответ на этот вопрос, чтобы узнать, как это сделать. Когда я создаю виджеты приложений, я обычно получаю портретный вид идеально подходящим, затем копирую этот файл макета в каталог layout-land и начинаю вносить изменения, пока он не будет выглядеть так, как я хочу, чтобы он тоже был в альбомной ориентации.

person Mark B    schedule 26.01.2010