Задержка ContextMenu на ListView
У меня есть Activity
с ListView
, Вы долго нажимаете на каждый ряд, чтобы получить ContextMenu
, В нижней части ListView
является EditText
коробка. Это выглядит так:
<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>
Проблема: ContextMenu не будет отображаться, пока вы физически не нажмете курсор внутри поля EditText (даже если я уже запрашиваю фокус), а затем нажмите LongPress строку списка. Если вы долго нажимаете на строку списка ПЕРВАЯ, ничего не происходит. Вот 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
коробка.
1 ответ
Я понял. В моем файле макета строки (не показан) у меня есть три кнопки. Я должен был установить каждый:
android:focusable="false"
Простое исправление, по-видимому.