2016-12-18 8 views
0

私がしたいことは、RelativeLayoutプレスステートがアクティブなときに、レイアウトアルファを50%にしたい場合は、100%アルファを必要とします。オンボードの相対レイアウト

次のコードは機能していないようです。

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

を発見した一つの観察は、それはあなたがフォーカス可能であるためにあなたのRelativeLayoutを設定していなかったので、 'hasFocus()は'動作しなかったことをすることができるということです。 RelativeLayout xmlに 'android:focusable =" true "'と 'android:focusableInTouchMode =" true "を追加すると、' 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; 
     } 
    }); 
} 
関連する問題