2013-03-06 49 views
5

爲了對圖標和文本進行分組,我已將它們組合在一個線性佈局中,並實現了線性佈局的偵聽器。onclicklistener發佈到LinearLayout的問題

<LinearLayout 
     android:id="@+id/ll0" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="fill_horizontal" 
     android:orientation="vertical" > 
     <ImageButton 
      android:id="@+id/imageButton0" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@null" 
      android:src="@drawable/start" /> 
     <TextView 
      android:id="@+id/textView0" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Start" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 
    </LinearLayout> 

我已經實現了監聽器,通過以下方式: -

l0 = (LinearLayout)findViewById(R.id.ll0); 
l0.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      //Some Code 
     } 
    }); 

我現在面臨的問題是,我點擊圖標,聽者似乎並沒有作出迴應。當我單擊文本視圖和圖標之間的空間時,監聽器就工作了。我希望整個部分都是可點擊的,而不是特定的點。

回答

6

我認爲ImageButton是一個可點擊的視圖,正在捕獲點擊,阻止LinearLayout接收點擊事件。嘗試將android:clickable="false"添加到定義ImageButton的XML中。

但是,更好的答案是使用複合drawable。見How do I use a compound drawable instead of a LinearLayout that contains an ImageView and a TextView。基本上,您可以將android:drawableTop="@drawable/start"添加到定義TextView的XML中,並徹底廢除LinearLayoutImageButton。然後你只需要點擊TextView

+1

android:clickable似乎沒有幫助,但複合drawable很好。 – daemon54 2013-03-06 21:10:51