我想更改动作模式的颜色或在动作栏上显示它,但我尝试的任何内容(比如更改动作上的动作模式背景)都有效。我怎么能这样做?
我将发布应用程序的代码和屏幕截图。
来自styles.xml的代码
<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="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="windowActionModeOverlay">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Dark" />
来自colors.xml的
代码
<resources>
<color name="colorPrimary">#ef7102</color>
<color name="colorPrimaryDark">#ff7300</color>
<color name="colorAccent">#000000</color>
<color name="Icones">#03A9F4</color>
<color name="black">#000000</color>
<color name="actionMode">#ffffff</color>
来自片段的
代码
public class SaldoProdutos extends Fragment {
private static final String ARG_PARAM1 = "id";
private String mParam1;
SaldoProdutosAdpter adpt;
bonus.app.bonuscard.Classes.SaldoProdutos item;
public static final int CONNECTION_TIME = 1000 * 15;
public static final String SERVIDOR = "http://bonusfidelidade.com.br/app";
int caraio;
int coisao;
List<Integer> posicao = new ArrayList<Integer>();
private ActionMode mActionMode;
List<bonus.app.bonuscard.Classes.SaldoProdutos> contadores = new ArrayList<bonus.app.bonuscard.Classes.SaldoProdutos>();
public static SaldoProdutos newInstance(String param1) {
SaldoProdutos fragment = new SaldoProdutos();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
fragment.setArguments(args);
return fragment;
}
public SaldoProdutos() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
}
}
@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
FrameLayout frameLayout = (FrameLayout) getActivity().findViewById(R.id.frame_container);
frameLayout.removeAllViews();
final View tela = inflater.inflate(R.layout.fragment_saldo_produtos, container, false);
Bundle id = getArguments();
caraio = 0;
getActivity().setTitle("" + id.getString("empresa") + "");
Toolbar bar = (Toolbar) getActivity().findViewById(R.id.app_bar);
bar.setSubtitle(id.getString("pontos")+" Pontos");
bar.setSubtitleTextColor(Color.WHITE);
final ListView lista = (ListView) tela.findViewById(R.id.listaprodutos);
item = new bonus.app.bonuscard.Classes.SaldoProdutos(id.getString("filial"));
List<bonus.app.bonuscard.Classes.SaldoProdutos> itens = new ArrayList<bonus.app.bonuscard.Classes.SaldoProdutos>();
adpt = new SaldoProdutosAdpter(new ArrayList<bonus.app.bonuscard.Classes.SaldoProdutos>(), getActivity());
lista.setAdapter(adpt);
lista.setEmptyView(tela.findViewById(android.R.id.empty));
(new Carregadados()).execute();
lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Marcar(position, adpt.getItem(position), view);
}
});
return tela;
}
public boolean Marcar(int position, bonus.app.bonuscard.Classes.SaldoProdutos item, View view) {
adpt.toggleSelection(position);
boolean hasCheckedItems = adpt.getSelectedCount() > 0;
boolean retorno = false;
Bundle id = getArguments();
String coiso = id.getString("pontos");
coisao = Integer.parseInt(coiso);
TextView Pontos = (TextView) view.findViewById(R.id.PontosSaldo);
String pontos = Pontos.getText().toString().replace(" Pontos", "");
Integer valor = Integer.parseInt(pontos);
if (hasCheckedItems && mActionMode == null) {
mActionMode = getActivity().startActionMode(new ActionModeCallback());
if (contadores.contains(item)) {
caraio = caraio - valor;
contadores.remove(item);
posicao.remove(position);
retorno = false;
} else {
contadores.add(item);
posicao.add(position);
caraio = caraio + valor;
retorno = true;
}
mActionMode.setTitle(+caraio + "/" + coisao + " Pontos Selecionados");
} else if (!hasCheckedItems && mActionMode != null) {
contadores.clear();
posicao.clear();
adpt.notifyDataSetChanged();
caraio = 0;
mActionMode.finish();
}
else if (hasCheckedItems && mActionMode != null) {
if (contadores.contains(item)) {
caraio = caraio - valor;
contadores.remove(item);
posicao.remove(position);
retorno = false;
} else {
contadores.add(item);
posicao.add(position);
caraio = caraio + valor;
retorno = true;
}
mActionMode.setTitle(+caraio + "/" + coisao + " Pontos Selecionados");
}
return retorno;
}
private class Carregadados extends AsyncTask<String, Void, List<bonus.app.bonuscard.Classes.SaldoProdutos>> {
private final ProgressDialog dialog = new ProgressDialog(getActivity());
@Override
protected void onPostExecute(List<bonus.app.bonuscard.Classes.SaldoProdutos> result) {
super.onPostExecute(result);
dialog.dismiss();
adpt.setItemList(result);
adpt.notifyDataSetChanged();
}
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.setCancelable(false);
dialog.setTitle("Carregando");
dialog.setMessage("Por Favor Aguarde");
dialog.show();
}
@Override
protected List<bonus.app.bonuscard.Classes.SaldoProdutos> doInBackground(String... params) {
List<bonus.app.bonuscard.Classes.SaldoProdutos> result = new ArrayList<bonus.app.bonuscard.Classes.SaldoProdutos>();
ArrayList<NameValuePair> data = new ArrayList<>();
Bundle id = getArguments();
String filial = id.getString("filial");
data.add(new BasicNameValuePair("empresa", filial));
HttpParams httprequestparams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httprequestparams, CONNECTION_TIME);
HttpConnectionParams.setSoTimeout(httprequestparams, CONNECTION_TIME) ;
HttpClient cliente = new DefaultHttpClient(httprequestparams);
HttpPost post = new HttpPost(SERVIDOR + "/saldoprodutos.php");
try {
post.setEntity(new UrlEncodedFormEntity(data));
HttpResponse response = cliente.execute(post);
HttpEntity entity = response.getEntity();
String JSONResp = EntityUtils.toString(entity);
JSONArray arr = new JSONArray(JSONResp);
for (int i=0; i < arr.length(); i++) {
result.add(ConvertDados(arr.getJSONObject(i)));
}
return result;
}
catch(Throwable t) {
t.printStackTrace();
}
return null;
}
public bonus.app.bonuscard.Classes.SaldoProdutos ConvertDados(JSONObject obj) throws JSONException {
Bundle id = getArguments();
String filial = id.getString("filial");
int ID = obj.getInt("id");
int pontos = obj.getInt("pontos");
int segunda = obj.getInt("segunda");
int terca = obj.getInt("terca");
int quarta = obj.getInt("quarta");
int quinta = obj.getInt("quinta");
int sexta = obj.getInt("sexta");
int sabado = obj.getInt("sabado");
int domingo = obj.getInt("domingo");
int ativo = obj.getInt("ativo");
String produto = obj.getString("produto");
return new bonus.app.bonuscard.Classes.SaldoProdutos(ID,pontos,segunda,terca,quarta,quinta,sexta,sabado,domingo,ativo,produto,filial);
}
}
private class ActionModeCallback implements ActionMode.Callback {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
getActivity().findViewById(R.id.app_bar).setVisibility(View.GONE);
mode.getMenuInflater().inflate(R.menu.action_menu, menu);
getActivity().findViewById(R.id.app_bar).setVisibility(View.GONE);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
int id = item.getItemId();
if(id == R.id.criarvoucher){
if (caraio > coisao)
{
AlertDialog.Builder alerta = new AlertDialog.Builder(getActivity());
alerta.setTitle("Erro");
alerta.setMessage("Pontos Insuficientes para geração do Voucher");
alerta.setPositiveButton("OK", null);
alerta.show();
mode.finish();
}
else {
FragmentManager fm = getFragmentManager();
GerarVoucher fragment = new GerarVoucher();
// Bundle bundle = new Bundle();
fragment.show(fm, "Gerar Voucher");
}
}
adpt.notifyDataSetChanged();
contadores.clear();
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
mActionMode = null;
caraio = 0;
Log.d("posicao", ""+posicao);
for (Integer item:posicao)
{
adpt.toggleSelection(item);
}
posicao.clear();
contadores.clear();
getActivity().findViewById(R.id.app_bar).setVisibility(View.VISIBLE);
}
}
}
片段截图