2016-12-18 1 views
0

Ce que je veux est, Lorsque l'état de presse RelativeLayout est actif, je veux que la mise en page alpha soit 50% et quand ce n'est pas j'ai besoin de 100% alpha.Mise en page relative surpress

Le code suivant ne semble pas fonctionner.

if (relativelayout.hasFocus()){ 
    relativelayout.setAlpha(0.5f); 
} 

J'essayé de placer l'arrière-plan de la mise en page par rapport à cette

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true" 
     android:drawable="@drawable/drawer_list_pressed" /> 

    <item android:state_focused="false" 
     android:drawable="@drawable/drawer_list_normal" /> 

    <item android:state_selected="true" 
     android:drawable="@drawable/drawer_list_pressed" /> 

</selector> 

Il travaille à changer l'arrière-plan, mais pas l'alpha du contenu.

+0

Une observation est qu'il peut être que le 'hasFocus()' ne fonctionne pas parce que vous n'avez pas défini votre RelativeLayout être focalisable. Essayez d'ajouter 'android: focusable =" true "' et android: focusableInTouchMode = "true" dans votre xml RelativeLayout, il se peut que 'hasFocus()' fonctionne. Je sais que vous l'avez résolu, mais vérifiez-le, cela pourrait vous aider dans le futur, parce que ce serait une solution plus simple que d'implémenter un écouteur tactile – FabioR

Répondre

0

après réflexion je l'ai trouvé une solution

public void pressed(final View view){ 
    view.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN){ 
       view.setAlpha(0.5f); 
      } 
      else { 
       view.setAlpha(1.0f); 
      } 
      return true; 
     } 
    }); 
}