Gaë*_*tan 85 android android-support-library android-actionmode android-toolbar
我试图使用android.view.ActionMode新的android.support.v7.widget.Toolbar,除了传统的android.app.ActionBar.我可以用以下方式显示它:
toolbar.startActionMode(callback);
Run Code Online (Sandbox Code Playgroud)
问题是,ActionMode显示在ActionBar,而不是在Toolbar.有办法改变吗?
我试图在我的主题中设置以下内容,但它似乎没有改变任何东西:
<item name="windowActionModeOverlay">true</item>
Run Code Online (Sandbox Code Playgroud)
Kuf*_*ffs 77
由于您使用的是
Toolbar,我还以为你正在使用的AppCompatActivity和已经取代了内置的ActionBar与您的自定义Toolbar使用setSupportActionBar(toolbar);
首先确保您导入正确的命名空间.
import androidx.appcompat.view.ActionMode;
// Or
import android.support.v7.view.ActionMode;
Run Code Online (Sandbox Code Playgroud)
并不是
import android.view.ActionMode;
Run Code Online (Sandbox Code Playgroud)
然后用
_actionMode = startSupportActionMode(this);
Run Code Online (Sandbox Code Playgroud)
并不是
_actionMode = startActionMode(this);
Run Code Online (Sandbox Code Playgroud)
Fra*_*ank 66
不要在您的活动上启动它,而是在工具栏上启动它.在你的活动中:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.startActionMode(mActionModeCallback)
Run Code Online (Sandbox Code Playgroud)
你必须使用
<item name="windowActionModeOverlay">true</item>
Run Code Online (Sandbox Code Playgroud)
在你的主题中,安德烈说.
And*_*ivo 40
在你的主题中尝试这个:
<item name="windowActionModeOverlay">true</item>
Run Code Online (Sandbox Code Playgroud)
Lef*_*fty 10
我认为人们不清楚的一件事是
<item name="windowActionModeOverlay">true</item>
Run Code Online (Sandbox Code Playgroud)
放置在基本主题中,即AppTheme而不是AppTheme.NoActionBar
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionModeOverlay">true</item>
</style>
<style name="transparent" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
Run Code Online (Sandbox Code Playgroud)
小智 5
找到您的AndroidManifest.xml,然后在您的应用程序或Activity主题中添加以下代码
<item name="windowActionModeOverlay">true</item>
Run Code Online (Sandbox Code Playgroud)
像这样:
<style name="WorkTimeListTheme" parent="AppTheme.NoActionBar">
<item name="windowActionModeOverlay">true</item>
<item name="actionModeBackground">@color/theme_primary</item>
</style>
Run Code Online (Sandbox Code Playgroud)
所以,在通过这个线程几天后,我终于让它工作了。我想总结一下我所做的。
注:这是使用该解决方案
Toolbar来替代默认ActionBar在AppCompatActivity。
AppTheme: 它告诉 android 您希望您的操作模式覆盖工具栏<item name="windowActionModeOverlay">true</item>
Run Code Online (Sandbox Code Playgroud)
您必须使用这些导入才能使用AppCompatActivity:
import androidx.appcompat.view.ActionMode;
// or
import android.support.v7.view.ActionMode;
Run Code Online (Sandbox Code Playgroud)
actionMode = startSupportActionMode(callback);
Run Code Online (Sandbox Code Playgroud)
而不是这样:
actionMode = startActionMode(callback);
Run Code Online (Sandbox Code Playgroud)
您的 Activity 会自动在工具栏上创建 ActionMode,因为它被设置为 supportActionToolbar。该样式将显示处理为叠加。
感谢@Kuffs 和@Lefty。
| 归档时间: |
|
| 查看次数: |
25893 次 |
| 最近记录: |