Как сделать домашний виджет похожим на значок запуска? - PullRequest
3 голосов
/ 26 января 2010

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

Я использую этот макет для портрета:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

  <RelativeLayout
    android:background="@drawable/widget_background_selector"
    android:focusable="true"
    android:layout_width="74dip"
    android:layout_height="79dip"
    android:layout_marginLeft="3dip"
    android:layout_marginTop="14dip">

    <ImageView android:id="@android:id/background"
      android:layout_width="72dip"
      android:layout_height="72dip"
      android:layout_marginLeft="1dip"
      android:layout_marginTop="4dip" />

  </RelativeLayout>

</RelativeLayout>

А это селектор фона:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
  <item android:state_pressed="true" android:drawable="@drawable/widget_background_pressed" /> 
  <item android:state_window_focused="true" android:state_focused="true" android:drawable="@drawable/widget_background_focused" /> 
  <item android:state_window_focused="false" android:state_focused="true" android:drawable="@android:color/transparent" /> 
</selector>

Таким образом, если я использую DPAD, виджет фокусируется, но щелчок не работает. Тач все еще работает, но виджет не отображается как сфокусированный.

Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 16 марта 2010

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

Я не вижу ни одного атрибута id для вашего RelativeLayout, поэтому мое замечание заключается в том, что вы даже не зарегистрировали OnClickPendingIntent для RelativeLayout, для которого вы хотите обрабатывать события щелчка. И, возможно, вы создали намерение для ImageView, который получает события касания, но не события нажатия кнопки dpad, потому что его родитель (RelativeLayout) запросил фокус (и не имеет обработчика события щелчка) .

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