Intereting Posts
Android ConstraintLayout @dimens заменены жестко заданными значениями Как сделать прослушиватель прокрутки для WebView в Android Отчет о покрытии говорит о нулевом охвате андроида с помощью градиента Фильтр Intent для загрузки вложений из приложений gmail на Android Почему разрешения AndroidManifest не установлены в моем приложении Объем временных переменных – оптимизирует ли Eclipse / компилятор? Отказано, чтобы отобразить фрейм, потому что он установил X-Frame-Options в «DENY» в веб-обозревателе Android Перезвонить для Android намерений, используя телефонную развязку Как работают функции высшего порядка Котлина? Невозможно включить в класс ViewPager Анимация Android прекращается, когда просмотр не отображается Android-Maven-Plugin v3.4.0 не может найти доступные ресурсы при создании приложения Close () никогда не вызывался явным образом в базе данных даже после реализации close () Android Parcelable и Serializable Hex to String в Android (Java)?

Подсказка кнопки изображения Android

Я пытаюсь создать приложение с кнопками изображения, которые работают как панель действий, но я не могу заставить их показывать всплывающую подсказку при длительной печати.

<ImageButton android:id="@+id/editUrgent" style="?android:attr/borderlessButtonStyle" android:layout_width="48dp" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toLeftOf="@+id/editImportant" android:hint="@string/hint_urgent" android:contentDescription="@string/hint_urgent" android:text="@string/hint_urgent" android:src="@drawable/clock_light" /> 

Android: contentDescription работает для зависания (s-pen), но длительное нажатие все равно ничего не делает.

Это код, который поддерживает Библиотека поддержки v7, чтобы отображать «чит-лист» для элементов меню действий:

 public boolean onLongClick(View v) { if (hasText()) { // Don't show the cheat sheet for items that already show text. return false; } final int[] screenPos = new int[2]; final Rect displayFrame = new Rect(); getLocationOnScreen(screenPos); getWindowVisibleDisplayFrame(displayFrame); final Context context = getContext(); final int width = getWidth(); final int height = getHeight(); final int midy = screenPos[1] + height / 2; int referenceX = screenPos[0] + width / 2; if (ViewCompat.getLayoutDirection(v) == ViewCompat.LAYOUT_DIRECTION_LTR) { final int screenWidth = context.getResources().getDisplayMetrics().widthPixels; referenceX = screenWidth - referenceX; // mirror } Toast cheatSheet = Toast.makeText(context, mItemData.getTitle(), Toast.LENGTH_SHORT); if (midy < displayFrame.height()) { // Show along the top; follow action buttons cheatSheet.setGravity(Gravity.TOP | GravityCompat.END, referenceX, height); } else { // Show along the bottom center cheatSheet.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, height); } cheatSheet.show(); return true; } 

Не совсем то, что вы ищете, но оно делает что-то очень похожее.

1) Убедитесь, что у вас есть android:longClickable="true" (должно быть по умолчанию) и имеет определенное описание содержимого android:contentDescription="@string/myText" :

 <ImageButton android:id="@+id/button_edit" android:contentDescription="@string/myText" android:src="@drawable/ic_action_edit" android:onClick="onEdit" android:longClickable="true"/> 

2) Зарегистрируйте обратный вызов, который нужно вызвать, когда длинное нажатие. Обработчик отобразит описание содержимого в виде тоста.

 findViewById(R.id.button_edit).setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { Toast.makeText(context,view.getContentDescription(), Toast.LENGTH_SHORT).show(); return true; } });