2016-12-18 4 views
0

Что я хочу, когда состояние нажатия RelativeLayout активно, я хочу, чтобы макет альфа был 50%, и когда его не нужно 100% alpha.Относительная компоновка onpress

Этот код не работает.

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

Я попытался установить фон относительного расположения к этому

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

Он работает на изменение фона, но не альфа содержимого.

+0

Одно наблюдение состоит в том, что это может быть, что 'HasFocus()' не работает, потому что вы не установили свой RelativeLayout быть фокусирования. Попробуйте добавить 'android: focusable =" true "и' android: focusableInTouchMode = "true" в ваш RelativeLayout xml, возможно, что 'hasFocus()' будет работать. Я знаю, что вы решили это, но проверьте это, может помочь вам в будущем, потому что это будет более простое решение, чем внедрение сенсорного прослушивателя – FabioR

ответ

0

после некоторого мышления я нашел решение

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; 
     } 
    }); 
} 
Смежные вопросы