2016-12-15 1 views
0

ユーザーが自分のフレームをクリックしたときにビジュアルフィードバックを追加する必要があります。私は同様の質問からのいくつかの提案に従ったが、私はそれを動作させることができず、なぜ動作していないのか分からない。ここで私はこれまで何をしたか:RelativeLayoutをクリックしたときのビジュアルフィードバック

rectangle_visual_feedback.xml:

<?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/rectangle_visual_feedback" /> 
</selector> 

rectangle_visual_feedback_selector.xml:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
<solid android:color="#40808080"/> 
<padding android:bottom="10dp" android:right="10dp" android:top="10dp" android:left="10dp"></padding> 
</shape> 

fragment.xml:

<LinearLayout 
     android:id="@+id/linearlayout_holder" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:background="?android:attr/selectableItemBackground" 
     android:clickable="true" 
     android:paddingBottom="3dp" 
     android:paddingLeft="10dp" 
     android:paddingRight="3dp" 
     android:paddingTop="10dp"> 

     <RelativeLayout 
      android:id="@+id/relativelayout_mainwrap" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:padding="8dp" 
      android:background="@drawable/rectangle_visual_feedback_selector" 
      > 

      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_centerVertical="true" 
       android:gravity="center" 
       android:orientation="horizontal"> 

       <ImageView 
        android:id="@+id/imageview_image" 
        android:layout_width="22dp" 
        android:layout_height="22dp" 
        android:src="@drawable/thehotel_b" /> 

       <com.hotelstayapp.android.custom.CustomTextView 
        android:id="@+id/customtextview_text" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="5dp" 
        android:gravity="center_vertical" 
        android:textAllCaps="true" 
        android:textSize="16sp" /> 
      </LinearLayout> 

     </RelativeLayout> 
    </LinearLayout> 

ここで内部のコードがあるとRelativeLayoutを呼び出すために使用するフラグメント:

RelativeLayout relativelayout_mainwrap = (RelativeLayout) view.findViewById(R.id.relativelayout_mainwrap); 
RelativeLayout relativelayout_mainwrap.setBackgroundColor(Color.parseColor("#" + Theme.BackColorOpacity + Theme.BackColor)); 

これはなぜ機能しないのでしょうか?視覚的なフィードバックのために

+0

あなたはすでに 'android:background'を使ってXMLで背景を与えています。なぜ、Javaで別の背景色を設定するのですか? – Karakuri

+0

アンドロイドを削除してみてください:親のレイアウトからclickable = "true" – student

答えて

0

あなたは、

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:color="@color/colorAccent" android:state_pressed="true" /> 
    <item android:color="@color/navigation_icon_default" /> 
</selector> 

を以下のDrawableを作成して、相対的なレイアウトの背景には、この描画可能に設定することができます。

関連する問題