Bonjour,

j'essaie actuellement de développer un application Android faisant appel à des boutons personnalisés ('j'ai d"ailleurs ouvert un topic à ce sujet).
J'utilise donc des ImageButton auxquels j'attribut une image (se trouvant dans mes ressources Drawables)
J'arrive donc à ce résultat :
Nom : clickposition.PNG
Affichages : 363
Taille : 16,1 Ko


Or, je ne souhaite pas que le click se déclenche si l'utilisateur appui sur le bouton (carré) en dehors de la zone bleue.
Pour cela, j'ai besoin de récupérer la position à laquelle le click est effectué, j'ai donc implémenté ce code :

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
 
public class MainActivity extends AppCompatActivity {
 
    private ImageButton b1;
    private ImageButton b2;
    private ImageButton b3;
    private ImageButton b4;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b1 = (ImageButton) findViewById(R.id.imageButton);
        b2 = (ImageButton) findViewById(R.id.imageButton2);
        b3 = (ImageButton) findViewById(R.id.imageButton3);
        b4 = (ImageButton) findViewById(R.id.imageButton4);
 
        b1.setOnTouchListener(new View.OnTouchListener(){
            public boolean onTouch(View view, MotionEvent event) {
                String s = view.getX() + " " + view.getY();
                Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
 
                return true;
            }
 
            }
        );
    }
}
Malheureusement, quelque soit l'endroit ou j'appui, la position renvoyée est toujours la même (celle visible sur la capture d'écran).

Auriez vous une solution pour pouvoir récupérer la position exacte du click ? (en prenant en référentiel l'ImageButton et non la totalité de l'écran)

Merci d'avance !

PS : Bien que cette problématique soit abordée dans le topic lié au début de celui-ci, j'ai souhaité crée un nouveau topic afin de mieux pointer cette problématique précise plut^t que de rester dans le topic général initial)