Bonjour à tous,

Dans le contexte de mon travail, je me suis retrouvé à devoir développer pour Android et je découvre petit à petit les subtilités de ce monde assez particulier.

Mon contexte est :
- J'ai une HorizontalScrollView qui contient un RelativeLayout qui contient lui même une ImageView et un LinearLayout
- Je charge dans ce LinearLayout une liste d'ImageView afin de constituer un menu horizontal comportant des icônes (nombre variable dépendant des préférences de l'utilisateur)
- L'ImageView du RelativeLayout est un pointeur se plaçant derrière l'icône sélectionné

Le tout donne ce résultat :


Le code du xml de design est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
<HorizontalScrollView 
    android:layout_width="fill_parent"
    android:layout_height="80dp"
    android:scrollbars="none"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"
    android:background="@drawable/channbar">
    <RelativeLayout
        android:id="@+id/layoutChannels"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content">
	<ImageView 
	    android:id="@+id/ivChannSelector"
	    android:layout_height="80dp"
	    android:layout_width="60dp"
	    android:src="@drawable/ch_highlight"
	    android:layout_below="@+id/llChannels"
	    android:layout_alignParentTop="true"
	    android:layout_marginTop="10dp"
	    android:layout_marginLeft="0dp"/>
	<LinearLayout 
	    android:id="@+id/llChannels"
	    android:orientation="horizontal"
	    android:layout_height="fill_parent"
	    android:layout_width="fill_parent"
	    android:layout_alignParentRight="true">
	</LinearLayout>
    </RelativeLayout>
</HorizontalScrollView>
Le code java est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
private static int CURR_CHANN_INDEX;
private void LoadChannels() {
    	LinearLayout lChanns = (LinearLayout)findViewById(R.id.llChannels);
 
		//Retrait préventif de toutes les vues enfants
		lChanns.removeAllViews();
 
		//Ajout des chaînes de la liste de l'utilisateur
    	for (int i = 0; i < channList.length; i++) {
    		ImageView iv = new ImageView(this);
 
    		final int channIndex = i;
 
    		//Image
    		File logoFile = new File(ImageUtils.GetLogoPath(channList[channIndex]));
    		if (logoFile.exists()) {
    			Bitmap myBmp = BitmapFactory.decodeFile(logoFile.getAbsolutePath());
    			iv.setImageBitmap(myBmp);
    		}
    		else {
    			iv.setImageResource(R.drawable.br_no_photo);
    		}
 
    		//Largeur et hauteur
    		LinearLayout.LayoutParams params = new LinearLayout.LayoutParams((int)getResources().getDimension(R.dimen.chann_list_imageview_height), LinearLayout.LayoutParams.WRAP_CONTENT);
 
    		//Marges
    		params.setMargins((int)getResources().getDimension(R.dimen.chann_list_imageview_margin), 0, (int)getResources().getDimension(R.dimen.chann_list_imageview_margin), 0);
 
    		//Gravité
    		params.gravity = Gravity.CENTER_VERTICAL;
 
    		//Application des paramètres
    		iv.setLayoutParams(params);
 
    		//Ajout du click Listener
    		iv.setOnClickListener(new OnClickListener() {
    			public void onClick(View v) {
    				DISPLAY_CHANN_ID = channList[channIndex];
    				refreshBroadcasts(DISPLAY_CHANN_ID);
    				SelectChannel(channIndex);
    			}
    		});
 
    		//Ajout de la vue à la liste
    		lChanns.addView(iv);
		}
    }
 
    private void SelectChannel(int newChannIndex) {
    	ImageView ivSel = (ImageView)findViewById(R.id.ivChannSelector);
    	ivSel.clearAnimation();
    	TranslateAnimation anim = new TranslateAnimation(CURR_CHANN_INDEX * (int)getResources().getDimension(R.dimen.chann_list_selector_width), newChannIndex * (int)getResources().getDimension(R.dimen.chann_list_selector_width), 0, 0);
    	anim.setDuration(500);
    	anim.setFillAfter(true);
    	ivSel.startAnimation(anim);
    	CURR_CHANN_INDEX = newChannIndex;
    }
Et mon problème :
Quand je clique sur un icône, le sélecteur se place bien à sa position, mais quand je fais un slide pour afficher les icones de droite et que je clique sur l'icone, le traitement se fait bien (il m'actualise mes données affichées en dessous) et mais le sélecteur reste a sa place et ne bouge que quand je commence à déplacer le scrollview... (je sais pas si le soucis est clair mais ce n'est pas facile à expliquer >_<)

Bref, si quelqu'un à une idée (ou une question pour plus d'éclaircissements) je suis preneur ^^

En vous remerciant par avance pour vos idées et potentielles solutions ^^