标签: android-actionmode

在recyclerview片段中实现上下文操作模式的问题

我从一堆教程中将我的第一个应用程序混在一起.在其中一个的帮助下,我在主要活动使用的片段中实现了RecyclerView.现在我找到了另一个教程,我想用它来实现具有上下文动作模式的多选.最大的问题是,教程没有使用片段.我试图重写代码以适应片段.我现在处于Android Studio中并没有出现任何错误且app运行的地方,但是当我实际执行LongClick以选择项时,它会因NullPointerException而崩溃:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.view.ActionMode.setTitle(java.lang.CharSequence)' on a null object reference

我完全迷失了为什么会发生这种情况以及整个多选择的东西.

我认为每个相关课程的相关部分是:

Adapter.java:

public class Adapter extends SelectableAdapter<Adapter.ViewHolder> {

private ArrayList<Meal> items = new ArrayList<>();

private Context context;
private ViewHolder.ClickListener clickListener;

public Adapter(ViewHolder.ClickListener clickListener) {
    super();
    this.clickListener = clickListener;

}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_today_items, parent, false);
    return new ViewHolder(v, clickListener);
}

@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
    Meal currentMeal = items.get(position);


    holder.meal_typeicon.setImageResource(currentMeal.getBadgeIcon()); …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-actionmode android-recyclerview

10
推荐指数
1
解决办法
6376
查看次数

部分可见的动作模式图标android

我刚刚从更新的Android支持库com.android.support:appcompat-v7:25.3.1来com.android.support:appcompat-v7:26.0.1.它改变了动作模式图标的外观.现在它们是半可见/按下,如图所示.

动作模式图标

它是支持库中的错误还是我做错了什么?

这是我如何设置动作模式的图标.

  @Override
            public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) {

                menu.add("Delete").setIcon(R.drawable.ic_action_discard);
                menu.add("Copy").setIcon(R.drawable.ic_action_copy);
                return true;
            }
Run Code Online (Sandbox Code Playgroud)

更新

我已经验证这是android支持库中的一个错误.

这是一个链接 https://issuetracker.google.com/issues/64207386

更新

谷歌更新了新版本.从Recent Support Library Revisions页面.

Bug修复

支持库26.0.0上的菜单图标展平

android android-actionmode

10
推荐指数
1
解决办法
458
查看次数

如何用我的主题指定黑暗动作模式

我知道有一些关于样式操作栏的上下文操作栏(ActionMode)部分的问题,但它们似乎并不能解决我所追求的问题.

我正在使用带有浅色主题和黑暗操作栏的工具栏.工具栏看起来像我想要的,但动作模式看起来像常规的黑暗主题.我需要改变自己的风格才能获得黑暗主题动作模式(不仅仅是动作栏)?似乎我应该能够通过点击进入快速,Theme.AppCompat因为这显示了CAB我想要的方式,但我不希望应用程序的其余部分变暗.

我只关心API 14+并使用支持工具栏代替操作栏.

这是我的基本风格

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:actionModeBackground">@color/colorActionMode</item>
    <item name="android:windowActionModeOverlay">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

工具栏样式

<style name="AppTheme.Toolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:textColorPrimary">@color/abc_primary_text_material_dark</item>
    <item name="actionMenuTextColor">@color/abc_primary_text_material_dark</item>
    <item name="android:textColorSecondary">@color/abc_primary_text_material_dark</item>
    <item name="android:background">@color/colorPrimaryDark</item>
</style>
Run Code Online (Sandbox Code Playgroud)

工具栏布局文件(此处设置popupTheme似乎没有任何效果).

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/actionBarSize"
    app:theme="@style/AppTheme.Toolbar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
    android:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
    android:elevation="2dp"
    android:focusable="false"/>
Run Code Online (Sandbox Code Playgroud)

这是我的工具栏(这就是我想要的)

样式工具栏

这是我的ActionMode(我需要反转)

我的行动模式

这就是我想要ActionMode的样子(我通过改变我的样式Theme.AppCompat而不是继承而得到的Theme.AppCompat.Light.DarkActionBar.问题是应用程序的其余部分变暗,我不想要.

黑暗的动作模式

android android-actionbar android-actionmode android-toolbar

9
推荐指数
2
解决办法
4221
查看次数

片段中的上下文动作模式 - 如果没有聚焦则关闭?

我在嵌套的fragement中实现了一个上下文动作模式栏.此片段是视图分页器的一部分,视图分页器也是片段和导航抽屉的一部分.

我的问题:如果片段不再集中,我想关闭上下文操作模式栏.因此,如果我在视图寻呼机中滑动,则应关闭操作模式栏.但是如果我使用onPause()嵌套片段的方法,则不直接调用该方法.通常它等到我向前滑了两三次......这是一些照片:

在此输入图像描述

在此输入图像描述

在第二张图片中,您可以看到操作模式栏仍然存在.所以我的问题是:我应该在哪种方法中调用我的actionModeBar.finish()方法,如果我离开片段,直接关闭动作模式栏?

也许片段的代码可以帮助你:

public class EditorFragment extends Fragment {

  private static final String KEY_POSITION="position";
  ListView listView;
  private boolean isMultipleList = false;
  private ActionMode acMode;
  private int counterChecked = 0;

  private ActionMode.Callback modeCallBack = new ActionMode.Callback() {

    public boolean onPrepareActionMode(ActionMode mode, Menu menu){
           return false;
       }

      public void onDestroyActionMode(ActionMode mode) {
          listView.clearChoices();
            for (int i = 0; i < listView.getChildCount(); i++)
                listView.setItemChecked(i, false);
                listView.post(new Runnable() {
                    @Override
                    public void run() {
                        listView.setChoiceMode(ListView.CHOICE_MODE_NONE);
                    }
                });
          isMultipleList = …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager android-contextmenu android-actionmode

8
推荐指数
2
解决办法
1万
查看次数

Webview文本选择不清除

我已经实现了一个ActionMode.Callback自定义文本选择功能WebView.我遇到的问题是选择和操作模式状态不匹配.

当我长按时,一切都很好.

长按时,选择突出显示与上下文操作栏一起显示.

当我与其中一个按钮或WebView(不包括实际选择)进行交互时,ActionMode应该销毁它,并且选择应该消失.

选择按钮,或触摸选择区域外. CAB应该关闭,选择应该消失.

在Android 4.4,KitKat中,这正是发生的事情.


然而,这不是4.1.1 - 4.3,Jelly Bean中发生的情况.单击其中一个按钮时,不会删除选择.

点击上下文操作栏中的按钮. 点击按钮后,选择仍然存在.

当我在选择之外点击时,恰好相反.删除选择,但上下文操作栏仍保留在屏幕上.

选择开始后点击<code>CustomWebView</code><p></p>

<pre><code>public class CustomWebView extends WebView {

    private ActionMode.Callback mActionModeCallback;

    @Override
    public ActionMode startActionMode(Callback callback) {
        ViewParent parent = getParent();
        if (parent == null) {
            return null;
        }
        mActionModeCallback = new CustomActionModeCallback();
        return parent.startActionModeForChild(this, mActionModeCallback);
    }

    private class CustomActionModeCallback implements ActionMode.Callback {

        // Called when the action mode is created; startActionMode() was called
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            // …</code></pre><a target=Run Code Online (Sandbox Code Playgroud)

android selection webview contextual-action-bar android-actionmode

8
推荐指数
1
解决办法
2799
查看次数

Android ActionMode标题背景颜色

我正在使用新的Android支持库21.0.2,当我调用ActionMode进行文本选择时,我得到了这个.

错误或功能

看起来比标题textview背景透明.

重新定义ActionMode的titleTextStyle无效.

有什么建议?谢谢.

theme.xml

    <item name="actionModeStyle">@style/ActionMode</item>
    <item name="android:actionModeStyle">@style/ActionMode</item>

    <style name="ActionMode" parent="@style/Widget.AppCompat.ActionMode">
        <item name="titleTextStyle">@style/ActionModeTitleTextStyle</item>
    </style>

    <style name="ActionModeTitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionMode.Title">
        <item name="android:background">#ff0000</item>
        <item name="android:colorBackground">#ff0000</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

android android-support-library android-actionmode

8
推荐指数
1
解决办法
1575
查看次数

启动ActionMode时有两个动作栏

我有以下活动布局:

<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawerLayout"
    style="@style/DrawerLayout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <android.support.design.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:context=".ui.activity.MyActivity">

        <android.support.design.widget.AppBarLayout
            android:id="@+id/app_bar"
            android:layout_width="match_parent"
            android:layout_height="@dimen/app_bar_height"
            android:background="@color/black"
            android:fitsSystemWindows="true"
            android:theme="@style/AppTheme.AppBarOverlay">

            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/toolbar_layout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                app:collapsedTitleTextAppearance="@style/ToolbarTitle"
                app:contentScrim="@color/primary"
                app:layout_scrollFlags="scroll|exitUntilCollapsed">

                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar_top"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    app:layout_collapseMode="pin"
                    app:popupTheme="@style/AppTheme.PopupOverlay"
                    app:theme="@style/ThemeOverlay.AppCompat.Light"/>

            </android.support.design.widget.CollapsingToolbarLayout>
        </android.support.design.widget.AppBarLayout>

        <my.package.ui.widget.MyHeaderWidget
            android:id="@+id/deal_header"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_behavior="my.package.ui.activity.MyHeaderBehavior"/>

        <include layout="@layout/content_list"/>
    </android.support.design.widget.CoordinatorLayout>

    <include layout="@layout/navigation_view"/>

</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

它用于具有折叠工具栏+导航抽屉+标题动画和子标题(在标题小部件中).在我尝试启动ActionMode以启用多选之前,一切都很好.

我通过致电来做到:

    mActionMode = mCollapsingToolbarLayout.startActionMode(mActionModeCallback);
Run Code Online (Sandbox Code Playgroud)

问题是我结束了两个动作栏(有两个箭头):

查看截图

黑色的那个是我期待在那里的那个,当我启动ActionMode时添加了白色的那个.

难道我做错了什么?

编辑

在AndroidMaifest中

    <activity
        android:name=".ui.activity.MyActivity"
        android:label="@string/title_activity"
        android:theme="@style/MyTheme">
    </activity>
Run Code Online (Sandbox Code Playgroud)

在styles.xml中

<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowBackground">@drawable/window_background_gray</item>
    <item name="android:colorBackground">@color/app_background</item>
    <item name="displayOptions">showHome|homeAsUp|showTitle</item>
    <item name="android:icon">@android:color/transparent</item>
    <item …
Run Code Online (Sandbox Code Playgroud)

android toolbar android-actionmode

8
推荐指数
2
解决办法
2047
查看次数

仅在操作模式(CAB)中拆分操作栏

只能在动作模式下使用拆分操作栏?

我的应用程序只有顶部操作栏,但它的Contextual Action Bar需要分成两部分(顶部/底部).

我找到了这个:

上下文操作栏不一定与操作栏相关联.它们独立运行,即使上下文操作栏在视觉上超过了操作栏位置.

在http://developer.android.com/guide/topics/ui/menus.html#CAB上.所以我认为这是可能的,但是怎么样?

android android-actionbar contextual-action-bar android-actionmode

7
推荐指数
1
解决办法
1205
查看次数

无法打开自定义文件扩展名

我有一个我希望支持的文件格式,它只是一个zip,但我已将其重命名为.amg,所以我的应用程序可以读取它.

在我的三星手机上用姜饼做的很好,它打开了.

在我的带有kitkat的motorola手机上我得到的是无法打开它.

我试过这里找到的各种解决方案,但似乎都没有.

通常,我将文件复制到手机上的下载文件夹中,然后单击该文件.

唯一适用于kitkat的是如果我使用Astro文件管理器打开文件,但我无法强迫该应用程序在人身上.那么是什么让Astro工作却没有别的呢?

    <activity
        android:name="com.test.StartupActivity"
        android:label="@string/app_name"
        android:theme="@style/backdropTheme" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:host="*" />
            <data android:mimeType="*/*" />
            <data android:scheme="file" />
            <data android:pathPattern=".*\\.amg" />
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

** [编辑] ****** 如果我在kitkat中使用Astro文件管理器它似乎工作.所以Astro工作,我试过的其他三个,包括内置的一个,但姜饼总是有效.

但是,当我尝试打开文件时,在我的kitkat上,我得到以下异常:存储的块长度无效.

android android-manifest android-activity android-actionmode

7
推荐指数
1
解决办法
2179
查看次数

更改ActionMode溢出图标

有没有办法更改ActionMode Overflow图标而不更改"普通"ActionBar的图标?

android android-actionbar android-actionmode

6
推荐指数
2
解决办法
5855
查看次数