@Override public void itemClicked(View v, final int position) { clickedPosition = position; if (v instanceof RelativeLayout) { String videoUrl = videoList.get(position).player; UrlHelper.playVideo(getActivity(), videoUrl); } else if (v instanceof ImageButton) { PopupMenu popupMenu = new PopupMenu(getActivity(), v); if (isMy) { popupMenu.inflate(R.menu.popup_menu_my_video); } else { popupMenu.inflate(R.menu.popup_menu_video); } popupMenu.setOnMenuItemClickListener( item -> { switch (item.getItemId()) { case R.id.add: AdditionRequests.addVideo(getActivity(), videoList.get(position)); return true; case R.id.add_to_album: AdditionRequests.addVideoToAlbum(getFragmentManager(), videoList.get(position)); return true; case R.id.delete: showDeleteDialog(); return true; default: return false; } }); popupMenu.show(); } }
private void showMorePopup( View v, final GithubComment comment, final boolean canEdit, final boolean canDelete) { PopupMenu menu = new PopupMenu(context, v); menu.inflate(R.menu.comment_popup); menu.getMenu().findItem(R.id.m_edit).setEnabled(canEdit); menu.getMenu().findItem(R.id.m_delete).setEnabled(canDelete); menu.setOnMenuItemClickListener( new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { switch (menuItem.getItemId()) { case R.id.m_edit: if (editCommentListener != null) { editCommentListener.onEditComment(comment); } break; case R.id.m_delete: if (deleteCommentListener != null) { deleteCommentListener.onDeleteComment(comment); } break; } return false; } }); menu.show(); }
public void showMenu(View v) { PopupMenu popup = new PopupMenu(getActivity(), v); // This activity implements OnMenuItemClickListener popup.setOnMenuItemClickListener( new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { return false; } }); popup.inflate(R.menu.share_menu); popup.show(); }
public void showPopUp(View v, Todo todo, int position) { PopupMenu popup = new PopupMenu(mContext, v); popup.setOnMenuItemClickListener( new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.remove_todo: listener.onDeleteClick(todo, position); return true; case R.id.share_todo: listener.onShareClick(todo); return true; default: return false; } } }); popup.inflate(R.menu.menu_popup_todo); popup.show(); }
@SuppressLint("LongLogTag") @Override public void onClick(View v) { // This is an android.support.v7.widget.PopupMenu; PopupMenu popupMenu = new PopupMenu(mContext, v) { @Override public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) { switch (item.getItemId()) { case R.id.popup_delete: // deleteAlbum(mAlbum); Toast.makeText(mContext, "you click delete", Toast.LENGTH_SHORT).show(); return true; case R.id.popup_rename: // renameAlbum(mAlbum); Toast.makeText(mContext, "you click rename", Toast.LENGTH_SHORT).show(); return true; case R.id.popup_lock: // lockAlbum(mAlbum); Toast.makeText(mContext, "you click lock", Toast.LENGTH_SHORT).show(); return true; case R.id.popup_unlock: // unlockAlbum(mAlbum); Toast.makeText(mContext, "you click unlock", Toast.LENGTH_SHORT).show(); return true; case R.id.popup_set_cover: // setAlbumCover(mAlbum); Toast.makeText(mContext, "you click set cover", Toast.LENGTH_SHORT).show(); return true; default: return super.onMenuItemSelected(menu, item); } } }; popupMenu.inflate(R.menu.popup_menu); // if (mAlbum.isLocked()) { // popupMenu.getMenu().removeItem(R.id.album_overflow_lock); // popupMenu.getMenu().removeItem(R.id.album_overflow_rename); // popupMenu.getMenu().removeItem(R.id.album_overflow_delete); // } else { // popupMenu.getMenu().removeItem(R.id.album_overflow_unlock); // } // Force icons to show Object menuHelper; Class[] argTypes; try { // PopupMenu有一个私有变量mPopup,类型是MenuPopupHelper,有一个方法setForceShowIcon,用于显示icon Field fMenuHelper = PopupMenu.class.getDeclaredField("mPopup"); fMenuHelper.setAccessible(true); menuHelper = fMenuHelper.get(popupMenu); argTypes = new Class[] {boolean.class}; menuHelper .getClass() .getDeclaredMethod("setForceShowIcon", argTypes) .invoke(menuHelper, true); } catch (Exception e) { // Possible exceptions are NoSuchMethodError and NoSuchFieldError // // In either case, an exception indicates something is wrong with the reflection code, or the // structure of the PopupMenu class or its dependencies has changed. // // These exceptions should never happen since we're shipping the AppCompat library in our own // apk, // but in the case that they do, we simply can't force icons to display, so log the error and // show the menu normally. Log.w(TAG, "error forcing menu icons to show", e); popupMenu.show(); return; } popupMenu.show(); // 调整popupMenu的位置偏移量 try { Field fListPopup = menuHelper.getClass().getDeclaredField("mPopup"); fListPopup.setAccessible(true); Object listPopup = fListPopup.get(menuHelper); argTypes = new Class[] {int.class}; Class listPopupClass = listPopup.getClass(); // Get the width of the popup window int width = (Integer) listPopupClass.getDeclaredMethod("getWidth").invoke(listPopup); // Invoke setHorizontalOffset() with the negative width to move left by that distance listPopupClass .getDeclaredMethod("setHorizontalOffset", argTypes) .invoke(listPopup, -width + 100); // Invoke show() to update the window's position listPopupClass.getDeclaredMethod("show").invoke(listPopup); } catch (Exception e) { // Again, an exception here indicates a programming error rather than an exceptional condition // at runtime Log.w(TAG, "Unable to force offset", e); } FadingOutOtherItems(popupMenu); }
@NonNull @Override public Dialog onCreateDialog(final Bundle savedInstanceState) { final Context wrapped = ThemeUtils.getDialogThemedContext(getActivity()); final AlertDialog.Builder builder = new AlertDialog.Builder(wrapped); final Context context = builder.getContext(); mValidator = new TwidereValidator(context); final LayoutInflater inflater = LayoutInflater.from(context); @SuppressLint("InflateParams") final View view = inflater.inflate(R.layout.dialog_status_quote_retweet, null); final DummyStatusHolderAdapter adapter = new DummyStatusHolderAdapter(context); adapter.setShouldShowAccountsColor(true); final IStatusViewHolder holder = new StatusViewHolder(adapter, view.findViewById(R.id.item_content)); final ParcelableStatus status = getStatus(); assert status != null; builder.setView(view); builder.setTitle(R.string.retweet_quote_confirm_title); if (isMyRetweet(status)) { builder.setPositiveButton(R.string.cancel_retweet, this); } else if (!status.user_is_protected) { builder.setPositiveButton(R.string.retweet, this); } builder.setNeutralButton(R.string.quote, this); builder.setNegativeButton(android.R.string.cancel, null); holder.displayStatus(status, null, false, true); view.findViewById(R.id.item_menu).setVisibility(View.GONE); view.findViewById(R.id.action_buttons).setVisibility(View.GONE); view.findViewById(R.id.item_content).setFocusable(false); view.findViewById(R.id.comment_container) .setVisibility(status.user_is_protected ? View.GONE : View.VISIBLE); final ComposeMaterialEditText mEditComment = (ComposeMaterialEditText) view.findViewById(R.id.edit_comment); mEditComment.setAccountId(status.account_id); final boolean sendByEnter = mPreferences.getBoolean(KEY_QUICK_SEND); final EditTextEnterHandler enterHandler = EditTextEnterHandler.attach( mEditComment, new EditTextEnterHandler.EnterListener() { @Override public boolean shouldCallListener() { return true; } @Override public boolean onHitEnter() { final AsyncTwitterWrapper twitter = mTwitterWrapper; final ParcelableStatus status = getStatus(); if (twitter == null || status == null) return false; retweetOrQuote(twitter, status); dismiss(); return true; } }, sendByEnter); enterHandler.addTextChangedListener( new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) { updateTextCount(getDialog(), s, status); } @Override public void afterTextChanged(Editable s) {} }); final View commentMenu = view.findViewById(R.id.comment_menu); mPopupMenu = new PopupMenu(context, commentMenu, Gravity.NO_GRAVITY, R.attr.actionOverflowMenuStyle, 0); commentMenu.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { mPopupMenu.show(); } }); commentMenu.setOnTouchListener(mPopupMenu.getDragToOpenListener()); mPopupMenu.inflate(R.menu.menu_dialog_comment); final Menu menu = mPopupMenu.getMenu(); MenuUtils.setMenuItemAvailability( menu, R.id.quote_original_status, status.retweet_id > 0 || status.quoted_id > 0); mPopupMenu.setOnMenuItemClickListener( new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { if (item.isCheckable()) { item.setChecked(!item.isChecked()); return true; } return false; } }); final Dialog dialog = builder.create(); dialog.setOnShowListener( new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialog) { updateTextCount(dialog, mEditComment.getText(), status); } }); return dialog; }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_chat); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); locationRequest = LocationRequest.create() .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY) .setInterval(20000) .setFastestInterval(10000); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); toID = getIntent().getExtras().getInt("toID"); user = User.getInstance(); friend = user.getFriendsHashMap().get(String.valueOf(toID)); popupMenu = new PopupMenu(this, toolbar, Gravity.RIGHT); popupMenu.setOnMenuItemClickListener(this); popupMenu.inflate(R.menu.popup); ImageButton sendButton = (ImageButton) findViewById(R.id.chat_send); keyboard = (EditText) findViewById(R.id.chat_keyboard); scrollView = (ScrollView) findViewById(R.id.chat_scroll); messagesLayout = (LinearLayout) findViewById(R.id.chat_messages); userImage = (ImageView) findViewById(R.id.chat_user_image); userName = (TextView) findViewById(R.id.chat_user_name); ImageButton attachButton = (ImageButton) findViewById(R.id.chat_attach); sendButton.setOnClickListener(this); attachButton.setOnClickListener(this); changeToolBar(); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); String alarms = preferences.getString("message-notification-sound", "default ringtone"); Uri uri = Uri.parse(alarms); ringtone = RingtoneManager.getRingtone(this, uri); if (!isStarted) { messages = new MessageList(); LinkedBlockingQueue<Runnable> queue = new LinkedBlockingQueue<>(); isStarted = true; service = new Service(); try { queue.put(service); } catch (InterruptedException e) { e.printStackTrace(); } PausableThreadPool executor = new PausableThreadPool(2, 2, 10, TimeUnit.SECONDS, queue); executor.execute(service); threadReceiver = new Thread(Receiver); threadReceiver.start(); } else { while (threadReceiver.isAlive()) { threadReceiver.interrupt(); } threadReceiver = new Thread(Receiver); threadReceiver.start(); } loadDBMessages(); try { scrollView.post( new Runnable() { @Override public void run() { scrollView.fullScroll(View.FOCUS_DOWN); } }); } catch (Exception e) { e.printStackTrace(); } loadImage(); }
private static void showPopupMenu(final View v, final Object context) { if (ActivityFactory.getMainActivity().getCurrentUser() == null) return; id_menu = (int) context; PopupMenu popupMenu = new PopupMenu(v.getContext(), v); popupMenu.inflate(R.menu.menu_item); if (ActivityFactory.getMainActivity().getCurrentUser().getPost() == IUser.Posts.Адміністратар) popupMenu.getMenu().setGroupVisible(R.id.group_admin, true); else { // TODO:change admin menu } popupMenu.setOnMenuItemClickListener( new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { IItem iItem = ActivityFactory.getMainActivity().getItem(id_menu); IUser iUser = ActivityFactory.getMainActivity().getCurrentUser(); switch (item.getItemId()) { case R.id.menu_item_change: { if (iItem.getUserId() == iUser.getId()) { Bundle args = new Bundle(); args.putInt(IItem.ITEM_PARAM, (int) v.getTag()); ActivityFactory.getMainActivity() .openFragment(iMainActivity.Fragments.ItemAdd, true, args); } return true; } case R.id.menu_item_user_set: { Bundle args = new Bundle(); args.putInt(IItem.ITEM_PARAM, iItem.getId()); ActivityFactory.getMainActivity() .openFragment(iMainActivity.Fragments.Users, true, args); return true; } case R.id.menu_item_status_set: { ActivityFactory.getMainActivity().setTempItem(iItem); ActivityFactory.getMainActivity() .openFragment(iMainActivity.Fragments.Status, true); return true; } default: return false; } } }); popupMenu.setOnDismissListener( new PopupMenu.OnDismissListener() { @Override public void onDismiss(PopupMenu menu) {} }); popupMenu.show(); }