gpt4 book ai didi

android - 如何在 Material Design 中使用 appCompat 自定义上下文操作栏

转载 作者:IT王子 更新时间:2023-10-29 00:00:52 31 4
gpt4 key购买 nike

MainActivity.java

我已经在这个类中实现了MultiChoiceModeListener,下面是代码:

listView上:

listView.setMultiChoiceModeListener(MainActivity.this);
listView.setChoiceMode(listView.CHOICE_MODE_MULTIPLE_MODAL);


@Override
public boolean onActionItemClicked(ActionMode arg0, MenuItem arg1) {
switch (arg1.getItemId()) {
case R.id.save:

// Close CAB
arg0.finish();
return true;

case R.id.saveto:


// Close CAB
arg0.finish();
return true;
default:
return false;
}
}

@Override
public boolean onCreateActionMode(ActionMode arg0, Menu arg1) {
arg0.getMenuInflater().inflate(R.menu.save_menu, arg1);
return true;

}

@Override
public void onDestroyActionMode(ActionMode arg0) {
listadaptor.removeSelection();
}

@Override
public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) {
return false;
}

@Override
public void onItemCheckedStateChanged(ActionMode arg0, int arg1, long arg2,
boolean arg3) {

final int checkedCount = listView.getCheckedItemCount();
arg0.setTitle(checkedCount + " "+getResources().getString(R.string.selected));
listadaptor.toggleSelection(arg1);
}

style.xml

 <style name="AppTheme.Base" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/White</item>
<item name="android:windowNoTitle">true</item>
<item name="windowActionModeOverlay">true</item>
<item name="windowActionBar">false</item>
<item name="actionModeStyle">@style/LStyled.ActionMode</item>
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppTheme.Base">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>

<style name="LStyled.ActionMode" parent="@style/Widget.AppCompat.ActionMode">
<item name="background">@color/colorPrimary</item>
</style>

<style name="ActionBarThemeOverlay" parent="Theme.AppCompat.Light">
<item name="android:textColorPrimary">#fff</item>
<item name="colorControlNormal">#fff</item>
<item name="colorControlHighlight">#3fff</item>
</style>

<style name="HeaderBar">
<item name="android:background">#009688</item>
<item name="android:textStyle">bold</item>
</style>

<style name="ActionBarPopupThemeOverlay" parent="ThemeOverlay.AppCompat.Light">
<item name="android:textColor">#000</item>
</style>

下面是我的截图:

this is my material design screen

actionmode material design screen

您可以看到两个屏幕截图,在第二个屏幕截图中, Action 模式背景为白色,文本颜色也是白色。我想将其更改为顶部的第一个屏幕截图颜色。

最佳答案

你可以通过actionModeStyle属性改变ActionMode背景:

<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
....
....
<item name="actionModeStyle">@style/LStyled.ActionMode</item>
</style>

<style name="LStyled.ActionMode" parent="@style/Widget.AppCompat.ActionMode">
<item name="background">@color/color_action_mode_bg</item>
</style>

你当然需要定义一个名为color_action_mode_bg的颜色:

<color name="color_action_mode_bg">#009688</color>

您还可以更改其他内容。示例:

<item name="titleTextStyle">...</item>
<item name="subtitleTextStyle">...</item>
<item name="height">...</item>

要改变 SAVESAVETO 的文本颜色,请将以下内容添加到 AppTheme.Base:

<item name="actionMenuTextColor">@color/color_action_mode_text</item>

关于android - 如何在 Material Design 中使用 appCompat 自定义上下文操作栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27458421/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com