2010-01-26 8 views
3

J'ai un widget qui agit comme un lanceur sur l'écran d'accueil. Comment puis-je faire en sorte qu'il se comporte comme une icône de lanceur?Comment puis-je faire un widget home se comporter comme une icône de lancement?

J'utilise cette disposition pour le portrait:

<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> 

Et ceci est le sélecteur de fond:

<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> 

De cette façon, si j'utilise le DPAD le widget est focalisable mais le clic ne fonctionne pas . Le contact fonctionne toujours mais le widget n'est pas affiché comme étant focalisé.

Une idée de ce que je fais mal?

+0

Pour détecter un clic, avez-vous remplacé onTouch ou onClick? – CaseyB

+0

RemoteViews fournit uniquement la méthode setOnClickPendingIntent. De quelles méthodes parlez-vous? De quelle classe? – Tughi

+0

Juste un coup dans le noir, mais avez-vous essayé de régler 'android: focusableInTouchMode' sur true? –

Répondre

0

Qu'en est-il du code qui enregistre vos événements de clic? Pouvez-vous montrer cela?

Je ne vois aucun attribut id pour votre RelativeLayout, donc mon coup est que vous n'avez même pas enregistré un OnClickPendingIntent pour le RelativeLayout pour lequel vous voulez gérer les événements de clic. Et peut-être avez créé une intention pour le ImageView, qui reçoit les événements tactiles, mais pas les événements de clic dpad, parce que son parent (le RelativeLayout) a demandé le focus (et n'a pas de gestionnaire d'événements de clic).

+0

J'ai trouvé quel était le problème il y a une semaine, mais j'ai oublié de fermer cette question. Il était lié à l'ID manquant que vous avez remarqué. :-) – Tughi

Questions connexes