Виджет главного экрана Android (значок, метка в стиле) - PullRequest
4 голосов
/ 16 апреля 2010

Я пытаюсь создать значок / виджет (1 ячейка х 1 ячейка), который можно разместить на главном экране Android. Виджет будет выглядеть и действовать точно так же, как и другие стандартные ярлыки в Android. У него будет иконка, а под меткой его можно будет выбрать с помощью трекбола (возможность выделения), он будет выделен при выборе / нажатии.

Как мне создать этот виджет главного экрана?

Нужно ли самому создавать виджет, используя code / xml, или есть какой-то стандартный xml, стиль, тема, код, который я могу использовать, чтобы убедиться, что виджет будет иметь тот же стиль / тему, что и другие виджеты домашнего экрана?

В настоящее время у меня есть следующее

Рез / рисуем / corners.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/Corners">
    <stroke android:width="4dp" android:color="#CC222222"  />
    <padding android:left="4dp" android:top="1dp" android:right="4dp" android:bottom="1dp" />
    <corners android:radius="4dp" />
</shape>

Рез / макет / widget.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/Widget"
    android:layout_width="72dip"
    android:layout_height="72dip"
    android:orientation="vertical"
    android:focusable="true"
    android:gravity="center_horizontal"
    style="@android:style/Widget"   
    >

    <ImageView
        android:id="@+id/WidgetIcon"
        android:src="@drawable/icon"
        android:layout_width="fill_parent" 
        android:layout_height="50dip"
        android:paddingTop="3dip"
        android:gravity="center"
        />

    <TextView
        android:id="@+id/WidgetLabel"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:text="@string/app_name"
        android:textSize="15dip"
        android:background="@drawable/corners"
        />

</LinearLayout>

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

Любые идеи, если есть правильный способ сделать это, или я должен просто продолжать работать над вышеупомянутым, пока я не стану ближе?

Ответы [ 2 ]

9 голосов
/ 16 апреля 2010

«Правильный способ сделать это» - создать ярлык, а не пытаться имитировать его с помощью виджета приложения. Это неоднократно отмечалось основной командой Android (в частности, Romain Guy) в списке [android-developers], , например :

Виджеты должны выглядеть как виджеты, а не как ярлыки. Основная причина что нет абсолютно никакой гарантии о том, как будет выглядеть ярлык. Другие устройства (особенно с пользовательские интерфейсы системы, такие как MOTOBLUR или HTC Смысл) может иметь другой вид и Чувствовать. Или в следующем обновлении Android мы могли бы изменить способ ярлыков представлены.

1 голос
/ 17 июля 2012

Чтобы сделать ваш элемент совместимым с внешним видом и системой, нетрудно сослаться на системный атрибут android:attr/selectableItemBackground. Например, если вы хотите, чтобы ImageView в вашем виджете выглядело «выбираемым» с правильной подсветкой и т. Д .: просто сделайте

<ImageView
    ...
    android:background="?android:attr/selectableItemBackground"
    ...
    />

Есть много в android_sdk_path/platforms/android-x. Приятного копания!

РЕДАКТИРОВАТЬ: я узнал позже, что этот простой атрибут не живет в SDK

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