2013-02-18 53 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" 

显然是很简单的修复。