2012-09-28 62 views
0

我的應用程序有幾個RelativeLayout s,其中每個TextViewListView。我已將RelativeLayout設爲可點擊(並且效果很好)。問題是,嵌入在其中的ListView也是可點擊的,並且只要用戶試圖用列表單擊RelativeLayout的區域,點擊就會註冊列表。Android-點擊進入可點擊的RelativeLayout而不是RL的ListView

我試過將ListView設置爲clickable="false"focusable="false"。我在RelativeLayout上試過descendantsFocusability="blockDescendants"。那些不起作用。

解決方案是什麼?這是我的第一個應用程序,我錯過了什麼?

感謝

回答

0

我通過使列表項onItemClick方法模仿他們的父母的RelativeLayout的onclick方法解決我的問題。

如果父親的RelativeLayout會導致fragmentA,那麼其子列表中的每個項目也會導致fragmentA。

這感覺有點半熟又便宜,但現在起作用。

0

據我所知,如果你還沒有定義的ListView對象有機器人:onclick屬性=「」那麼他們應該不會響應點擊事件。但是,將它們設置爲clickable =「false」不會造成傷害。

管理中的機器人活動的onclick事件的最簡單方法是定義應該click事件以這種方式被監控的佈局每個視圖:

public void onClick(View v) { 
    switch(v.getId()){ 
      case R.id.ITEM1 : 
       //Insert stuff to do when clicked here 
      break; 
      case R.id.ITEM2 : 
       //Insert stuff to do when clicked here 
      break; 
    } 
} 

這個方法應該在活動執行的是具有通過編程或XML佈局定義的相對佈局和適當的視圖。如果你不想使用開關的情況下你總是可以替代if-else語句的條件沿線的,如果(v.getId()== R.id.ITEM_TO_CHECK)是...

歡呼聲中,

傑米

+0

謝謝,但將listviews設置爲clickable =「false」不起作用(focusable =「false」);他們的項目仍然是可點擊的,並且它們阻止了RelativeLayout被點擊。 – LoneDuck

+0

爲什麼不調用相同的邏輯if(v.getId()== layout.getId())|| (v.getId()== list.getId())? –

+1

我相信ListView的工作方式是ListView本身不是您需要停止點擊的東西,ListView持有的項目需要通過查找onClick操作來緩解。 ListView本身會註冊onClick動作,但只是確定您點擊哪個項目並觸發項目的相應事件。也許如果你可以通過尋找onClick事件來抑制這些項目,那可能會起作用,但是也會打敗擁有listView的點。 – Jamie