2013-01-25 9 views
7

Ich habe ein Layout wie diesesWie man ein Relativayout klickbar macht?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:addStatesFromChildren="true" 
    android:clickable="true" 
    android:duplicateParentState="true" 
    android:focusable="true" 
    android:paddingBottom="10dip" > 

    <ImageView 
     android:id="@+id/imagView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:focusable="false" 
     android:background="@drawable/imageView_bg" 
     android:focusableInTouchMode="false" /> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="18dip" 
     android:background="@drawable/button_bg" 
     android:clickable="false" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:gravity="left|center_vertical" 
     android:paddingLeft="25dip" 
     android:textColor="#ffffff" 
     android:textSize="20dip" /> 

</RelativeLayout> 

button_bg.xml

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

    </selector> 

imageView_bg.xml

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

</selector> 

Die Bildansicht und Schaltfläche haben images.when der Benutzer klickt auf die gedrückte Ansicht, möchte sowohl Bildansicht als auch Taste drücken (Anzeige gedrückter Bilder). Aber es werden keine gedrückten Bilder angezeigt. Wie erreiche ich das? Wo ist das Problem?

Vielen Dank im Voraus

+1

Haben Sie eine OnClickListener zu Ihrem RelativeLayout befestigen löst? – Shark

+0

sind sie übereinander gestapelt? – njzk2

+1

Ersetzen Sie die Bildansicht durch ein Layout, in dem Sie die Schaltfläche setzen und doppelter übergeordneter Zustand der Schaltfläche hinzufügen – njzk2

Antwort

4

Ich denke, es ist das Problem

((RelativeLayout)findViewById(R.id.mainLayout)).setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View view) { 
    ViewGroup viewGroup = (ViewGroup) view; 
    for (int i = 0; i < viewGroup .getChildCount(); i++) { 

     View viewChild = viewGroup .getChildAt(i); 
     viewChild.setPressed(true); 

      } 
    } 
}); 
0

Simple.Place RelativeLayout innerhalb des FrameLayout.

13
RelativeLayout rl = (RelativeLayout)findViewById(R.id.mainLayout); 

rl.setOnClickListener(new View.OnClickListener(){ 
    public void onClick(View v) {} 
}); 
+0

Wenn Sie "" RelativeLayout kann nicht in einen Typ aufgelöst werden ", stellen Sie sicher, dass Sie die folgenden am Anfang importieren von deiner Java-Datei: importiere android.widget.RelativeLayout und importiere android.view.View; – jwinn

+1

Kannst du nicht einfach 'android: clickable =" true "' setzen? –

Verwandte Themen