2013-02-18 73 views
0

我有一個ActivityListView。你長按每行得到一個ContextMenu。在ListView的底部是EditText框。它看起來像這樣:ListView上的延遲ContextMenu

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="3dp" 
    android:layout_marginTop="3dp" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/TVReviewItem" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:layout_marginLeft="10dp" 
     android:layout_weight="90" 
     android:text="Item Name" 
     android:textSize="20sp" /> 

    <Spinner 
     android:id="@+id/spinnerSort" 
     android:layout_width="120dp" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="5dp" 
     android:layout_marginTop="5dp" 
     android:gravity="left" /> 
</LinearLayout> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="1dp" 
    android:background="#bbb" > 
</LinearLayout> 

<ListView 
    android:id="@+id/android:list" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:longClickable="true" 
    android:scrollbars="none" > 
</ListView> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="1dp" 
    android:background="#bbb" > 
</LinearLayout> 

<EditText 
    android:id="@+id/etTweetReview" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:ems="10" 
    android:hint="Write a Review" 
    android:imeOptions="actionDone" 
    android:inputType="textCapSentences|textMultiLine" 
    android:maxLength="140" 
    android:maxLines="4" 
    android:minLines="1" 
    android:paddingBottom="9dp" 
    android:paddingTop="9dp" 
    android:singleLine="false" > 

    <requestFocus /> 
</EditText> 

的問題:文本菜單不會顯示,直到你實際按下的EditText框(即使我已經請求焦點)裏面的光標,然後長按列表行。如果長按列表行FIRST,則不會發生任何事情。這裏是OnCreateContextMenu:

@Override 
    public void onCreateContextMenu(ContextMenu menu, View v, 
      ContextMenuInfo menuInfo) { 

      super.onCreateContextMenu(menu, v, menuInfo); 
    android.view.MenuInflater inflater = getActivity() 
      .getMenuInflater(); 

    inflater.inflate(R.menu.reviews_context, menu); 
    menu.setHeaderTitle("Available Actions"); 

    android.view.MenuItem Edit = menu.findItem(R.id.edit); 
    android.view.MenuItem Delete = menu.findItem(R.id.delete); 

    AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; 

    int position = info.position; 
    ListView lv = (ListView) v; 
    int firstVisible = lv.getFirstVisiblePosition(); 
    View rowView = lv.getChildAt(position - firstVisible); 

    ReviewUser = ((TextView) rowView.findViewById(R.id.labelUser)) 
      .getText().toString(); 
    ReviewWords = ((TextView) rowView.findViewById(R.id.labelComment)) 
      .getText().toString(); 

    if (Rateit.isUserLoggedIn == true) { 
     if (Rateit.username.equals(ReviewUser) { 

      Edit.setVisible(true); 
      Delete.setVisible(true); 

     } else { 
      Edit.setVisible(false); 
      Delete.setVisible(false); 
     } 
    } else { 
     Edit.setVisible(false); 
     Delete.setVisible(false); 
    } 


} 

我上面和下面的其他內容與Super嘗試這樣做。任何人都可以看到有什麼不對?

更新:新信息。我發現如果滾動ListView,則必須滾動到底部,那麼如果嘗試,則允許您訪問ContextMenu。在這種情況下,它與EditText框無關。

回答

0

我想通了。在我的行佈局文件(未顯示)中,我有三個按鈕。我必須將每個設置爲:

android:focusable="false" 

顯然是很簡單的修復。