Фон виджета Android - PullRequest
       11

Фон виджета Android

0 голосов
/ 26 января 2010

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

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

Я нашел один пример, который использует 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-файл, который позволяет мне менять изображение при выборе виджета. Однако я бы предпочел действие значка по умолчанию, когда квадрат вокруг значка станет оранжевым.

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

1 Ответ

2 голосов
/ 26 января 2010

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...