2012-11-28 106 views
0

我在佈局xml中有以下兩個LinearLayout。點擊問題當一個佈局是INVISIBLE&其他佈局是可見的

我已經加入onClickListener在佈局項目都layout_edit & layout_create

<LinearLayout 
      android:id="@+id/layout_edit" 
      android:layout_width="wrap_content" 
      android:layout_height="50dp" 
      android:background="@color/white" 
      android:gravity="center" 
      android:paddingLeft="15dp" 
      android:paddingRight="15dp" 
      android:visibility="visible" > 

      <ImageView 
       android:id="@+id/imgView_edit" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/ic_edit" > 
      </ImageView> 
</LinearLayout> 

<LinearLayout 
      android:id="@+id/layout_create" 
      android:layout_width="wrap_content" 
      android:layout_height="50dp" 
      android:layout_toLeftOf="@id/layout_edit" 
      android:background="@color/white" 
      android:gravity="center" 
      android:paddingLeft="15dp" 
      android:paddingRight="15dp" 
      android:visibility="visible" > 

      <ImageView 
       android:id="@+id/imgView_create" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/ic_create" > 
      </ImageView> 
</LinearLayout> 

添加以下代碼:

LinearLayout linearLayoutEdit = (LinearLayout) getActivity().findViewById(R.id.layout_edit); 
mLinearLayoutEdit.setOnClickListener(this); 

LinearLayout linearLayoutCreate = (LinearLayout) getActivity().findViewById(R.id.layout_create); 
linearLayoutCreate.setOnClickListener(this); 

在特定的情況下,下面的代碼添加:

linearLayoutEdit.setVisibility(View.INVISIBLE);

現在,linearLayoutCreate仍然可見,但linearLayoutCreate onClick不起作用。

當linearLayoutEdit & linearLayoutCreate是VISIBLE時,它們的onClick都工作正常。

這似乎是因爲linearLayoutCreate定位linearLayoutEdit & linearLayoutEdit的左邊是使用代碼不可見,linearLayoutCreate的點擊動作不但其可見工作。

linearLayoutEdit爲INVISIBLE時,如何使linearLayoutCreate可點擊的提示。

我發現的一個解決方案是使用已有的ID再次重新創建佈局,但是還有其他解決方案嗎?現在

@Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.layout_edit: 
      break; 
     case R.id.layout_create: 
       // not navigating within this condition only when layout_edit is INVISIBLE, but //navigating when both layout_edit & layout_create are VISIBLE 
      break; 
     default: 
      break; 
     } 
    } 
+0

嘗試設置知名度'linearyLayoutEdit'到''去掉'而不是'不可見',因爲'不可見'仍然佔據着空間。 – Wenhui

+0

使用「[編輯]」將代碼添加到您的問題。正如你發現評論不顯示代碼非常好... – Sam

+0

'imgView_create'是否有任何監聽器連接到它(OnTouch,OnClick等)? – Sam

回答

0

,linearLayoutCreate仍然可見,但linearLayoutCreate的onClick不工作。

這聽起來像你已經安裝佈局隱藏一個佈局linearLayoutEdit點擊時,改變你的onClick()方法來隱藏被點擊的佈局:

@Override 
public void onClick(View v) { 
    v.setVisibility(View.INVISIBLE); 
} 
+0

我不能在onClick()上改變v.setVisibility(View.INVISIBLE)。在運行時,我檢查條件並使linearLayoutEdit.setVisibility(View.INVISIBLE)&linearLayoutCreate是可見的,但仍然linearLayoutCreate不可點擊。當linearLayoutEdit&linearLayoutCreate都可見時,他們的onClick工作正常。 – chiranjib

+0

在你的問題中發佈你的'onClick'方法,這聽起來像你的條件檢查可能不正確... – Sam

+0

已更新點擊問題本身。 – chiranjib