Android  .setTextColor(R.color. x)不生效

本文介绍了一种在Android中设置按钮字体颜色的正确方法。通常,直接使用setTextColor(R.color.x)可能无法生效,正确的做法是使用button.setTextColor(getResources().getColorStateList(R.color.orange_text));来实现颜色的更改。

设置组件的字体颜色直接使用.setTextColor(R.color. x),你会发现并不能改变字体颜色。

而想改变颜色必须使用

botton.setTextColor(getResources().getColorStateList(R.color.orange_text));

 

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context=".editpreset.EditPresetFragment"> <ImageView android:id="@+id/imageView3" android:layout_width="24dp" android:layout_height="24dp" android:scaleType="centerInside" android:src="@drawable/close" android:layout_marginStart="16dp" app:layout_constraintBottom_toBottomOf="@+id/edit_auto_white" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/edit_auto_white" /> <TextView android:id="@+id/edit_auto_white" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" android:text="Edit Auto White" android:textSize="20dp" app:layout_constraintStart_toEndOf="@+id/imageView3" app:layout_constraintTop_toTopOf="parent"> </TextView> <ImageView android:layout_width="24dp" android:layout_height="24dp" android:scaleType="centerInside" android:src="@drawable/ok" android:layout_marginEnd="16dp" app:layout_constraintBottom_toBottomOf="@+id/edit_auto_white" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@+id/edit_auto_white" app:layout_constraintVertical_bias="1.0" /> <!-- res/layout/fragment_tab_selector.xml --> <androidx.cardview.widget.CardView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" app:cardCornerRadius="50dp" app:cardElevation="4dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/edit_auto_white"> <com.google.android.material.button.MaterialButtonToggleGroup android:id="@+id/optionGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:selectionRequired="true"> <com.google.android.material.button.MaterialButton android:id="@+id/buttonA" android:layout_width="120dp" android:layout_height="48dp" android:text="A" android:checkable="true" android:checked="true" app:backgroundTint="@android:color/white" app:rippleColor="@android:color/transparent" /> <com.google.android.material.button.MaterialButton android:id="@+id/buttonB" android:layout_width="120dp" android:layout_height="48dp" android:text="B" android:checkable="true" app:backgroundTint="@android:color/white" app:rippleColor="@android:color/transparent" /> </com.google.android.material.button.MaterialButtonToggleGroup> </androidx.cardview.widget.CardView> </androidx.constraintlayout.widget.ConstraintLayout>package com.example.bulbpage.editpreset import android.content.res.ColorStateList import android.graphics.Color import androidx.fragment.app.viewModels import android.os.Bundle import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button import androidx.core.content.ContextCompat import com.example.bulbpage.R import com.example.bulbpage.databinding.FragmentEditPresetBinding class EditPresetFragment : Fragment() { private var _binding: FragmentEditPresetBinding? = null private val binding get() = _binding!! override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { _binding = FragmentEditPresetBinding.inflate(inflater, container, false) return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) // 默认选中 A binding.buttonA.isChecked = true binding.optionGroup.addOnButtonCheckedListener { group, checkedId, isChecked -> if (!isChecked) return@addOnButtonCheckedListener when (checkedId) { R.id.buttonA -> { Log.d("Click", "ClickA") binding.buttonA.backgroundTintList = ColorStateList.valueOf( ContextCompat.getColor(requireContext(), R.color.skyblue) ) binding.buttonA.setTextColor(Color.WHITE) binding.buttonB.backgroundTintList = ColorStateList.valueOf(Color.WHITE) binding.buttonB.setTextColor(Color.BLACK) } R.id.buttonB -> { Log.d("Click", "ClickB") binding.buttonB.backgroundTintList = ColorStateList.valueOf( ContextCompat.getColor(requireContext(), R.color.skyblue) ) binding.buttonB.setTextColor(Color.WHITE) binding.buttonA.backgroundTintList = ColorStateList.valueOf(Color.WHITE) binding.buttonA.setTextColor(Color.BLACK) } } } } override fun onDestroyView() { super.onDestroyView() _binding = null } }点击两次才生效
08-26
package com.weishitech.jtwzjiaotongcx.fragment.lilv; import android.app.AlertDialog; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import android.widget.Toast; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.google.common.reflect.TypeToken; import com.google.gson.Gson; import com.weishitech.jtwzjiaotongcx.R; import com.weishitech.jtwzjiaotongcx.adtakubase.activity.BaseBindActivity; import com.weishitech.jtwzjiaotongcx.bean.Question; import com.weishitech.jtwzjiaotongcx.databinding.ActivityDetailsBinding; import com.weishitech.jtwzjiaotongcx.fragment.Adapter.AnswerStatusAdapter; import com.weishitech.jtwzjiaotongcx.utils.OnMultiClickListener; import java.lang.reflect.Type; import java.util.List; public class AnswerDetailActivity extends BaseBindActivity<ActivityDetailsBinding> { private List<Question.DataBean> questionList; private RecyclerView recyclerView; private AnswerStatusAdapter adapter; @Override protected void init() { mBinding.ivBack.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { finish(); } }); recyclerView = mBinding.rv; recyclerView.setLayoutManager(new GridLayoutManager(this, 10)); // 每行10个题号 parseData(); setupAdapter(); } private void parseData() { String json = getIntent().getStringExtra("questionList"); if (json == null || json.isEmpty()) { Toast.makeText(this, "数据加载失败", Toast.LENGTH_SHORT).show(); finish(); return; } Type type = new TypeToken<List<Question.DataBean>>(){}.getType(); questionList = new Gson().fromJson(json, type); } private void setupAdapter() { adapter = new AnswerStatusAdapter(questionList, position -> { showQuestionDetailDialog(position); }); recyclerView.setAdapter(adapter); } private void showQuestionDetailDialog(int position) { Question.DataBean q = questionList.get(position); AlertDialog.Builder builder = new AlertDialog.Builder(this); View dialogView = LayoutInflater.from(this).inflate(R.layout.dialog_question_detail, null); builder.setView(dialogView); TextView tvTitle = dialogView.findViewById(R.id.tv_question_title); TextView tvUserAnswer = dialogView.findViewById(R.id.tv_user_answer); TextView tvCorrectAnswer = dialogView.findViewById(R.id.tv_correct_answer); TextView tvAnalysis = dialogView.findViewById(R.id.tv_analysis); TextView btnClose = dialogView.findViewById(R.id.btn_close); tvTitle.setText((position + 1) + ". " + q.getTitle()); String userAns = q.getShowAnswer(); if (!userAns.isEmpty()) { tvUserAnswer.setText(userAns); } else { tvUserAnswer.setText("未作答"); } tvCorrectAnswer.setText(q.getAnswer()); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { tvAnalysis.setText(Html.fromHtml(q.getAnalysis(), Html.FROM_HTML_MODE_LEGACY)); } else { tvAnalysis.setText(Html.fromHtml(q.getAnalysis())); } AlertDialog dialog = builder.create(); btnClose.setOnClickListener(v -> dialog.dismiss()); dialog.show(); } }package com.weishitech.jtwzjiaotongcx.fragment.Adapter; import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.weishitech.jtwzjiaotongcx.R; import com.weishitech.jtwzjiaotongcx.bean.Question; import java.util.List; public class AnswerStatusAdapter extends RecyclerView.Adapter<AnswerStatusAdapter.ViewHolder> { private final List<Question.DataBean> questions; private final OnItemClickListener listener; public interface OnItemClickListener { void onItemClick(int position); } public AnswerStatusAdapter(List<Question.DataBean> questions, OnItemClickListener listener) { this.questions = questions; this.listener = listener; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { Button button = new Button(parent.getContext()); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( 0, // width: 权重分配 180, 1.0f ); params.setMargins(8, 8, 8, 8); button.setLayoutParams(params); button.setTextSize(14); button.setAllCaps(false); // 关闭大写转换 return new ViewHolder(button); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { Button button = holder.button; Question.DataBean data = questions.get(position); String userAnswer = data.getShowAnswer(); button.setText(String.valueOf(position + 1)); if (userAnswer.isEmpty()) { // 未答:白底黑框 button.setBackgroundColor(Color.WHITE); button.setTextColor(Color.BLACK); button.setBackgroundResource(R.drawable.bg_answer_unanswered); } else if (userAnswer.equals(data.getAnswer())) { // 正确:蓝底白字圆角 button.setBackgroundResource(R.drawable.bg_answer_correct); button.setTextColor(Color.WHITE); } else { // 错误:红底白字圆角 button.setBackgroundResource(R.drawable.bg_answer_wrong); button.setTextColor(Color.WHITE); } button.setOnClickListener(v -> listener.onItemClick(position)); } @Override public int getItemCount() { return questions.size(); } static class ViewHolder extends RecyclerView.ViewHolder { Button button; public ViewHolder(Button button) { super(button); this.button = button; } } } 没有显示数据‘
12-31
package com.tplink.isp.component.more.deviceisolation.adapter import android.content.Context import android.view.MotionEvent import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat import androidx.core.view.isVisible import androidx.recyclerview.widget.ListAdapter import com.tplink.apps.data.iot.client.model.base.IotClientBean import com.tplink.apps.design.resource.getIoTClientTypeIconResource import com.tplink.design.list.TPListItemViewHelper import com.tplink.design.list.TPTwoLineItemViewHolder import com.tplink.design.util.accessibility.initAccessDelegate import com.tplink.design.util.accessibility.mergeStringsForA11y import com.tplink.isp.R import com.tplink.isp.component.more.blocklist.repository.bo.ClientList import com.tplink.isp.component.more.deviceisolation.repository.bo.DeviceInIsolation import com.tplink.network.tmp.ClientTypeV2 /** * @author zhangyuanyu@tp-link.com.hk * @date 7/6/2023 */ class DeviceIsolationItemAdapter( private val context: Context, private val callback: OnClickCallBack?, private val hostMac: String?, ) : ListAdapter<DeviceInIsolation, TPTwoLineItemViewHolder>(IsolatedDeviceAdapter.DeviceIsolationItemCallback()) { val addDeviceList: ArrayList<String> = ArrayList() var mEnable = true var hasHost = false companion object { const val HALF_TRANSPARENCY = 0.2f const val FULL_TRANSPARENCY = 1.0f } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TPTwoLineItemViewHolder { val holder = TPTwoLineItemViewHolder.create(parent) holder.lineItem.setActionMode(TPListItemViewHelper.ACTION_MODE_CHECKBOX) return holder } override fun onBindViewHolder(holder: TPTwoLineItemViewHolder, position: Int) { holder.lineItem.setActionMode(TPListItemViewHelper.ACTION_MODE_CHECKBOX) holder.lineItem.showDivider(position < itemCount - 1) val device = getItem(position) holder.itemView.tag = device holder.lineItem.setActionChecked((addDeviceList.contains(device.mac))) // 是否是本机 if (device.mac == hostMac) { holder.lineItem.getTitle().setTextColor(context.resources.getColor(R.color.device_list_offline_content_color)) holder.lineItem.content.setTextColor(context.resources.getColor(R.color.device_list_offline_content_color)) holder.lineItem.getStartIcon().alpha = HALF_TRANSPARENCY holder.itemView.isEnabled = false holder.lineItem.isClickable = false holder.lineItem.getActionCheckbox().isClickable = false holder.lineItem.label.isVisible = true holder.lineItem.label.text = context.getString(R.string.ada_my_device) holder.lineItem.label.setTextColor( ContextCompat.getColor( context, R.color.tpds_color_surface ) ) hasHost = true } else { holder.lineItem.label.isVisible = false holder.lineItem.getStartIcon().alpha = FULL_TRANSPARENCY holder.itemView.isEnabled = true holder.lineItem.isClickable = true // holder.lineItem.getActionCheckbox().isClickable = true } holder.lineItem.setOnClickListener { if (mEnable) { onItemClick(device, holder) } } holder.lineItem.setTitleText(device.deviceName) holder.lineItem.setContentText(device.mac) holder.lineItem.setStartIcon( if (callback?.getIotClientByMac(device.mac?:"") != null) { device.clientType.getIoTClientTypeIconResource(device.isOnline) } else { ClientList.getClientTypeImg( device.clientType ?: ClientTypeV2.OTHER, device.isOnline ) } ) with(holder.lineItem) { initAccessDelegate().setContentDescriptionProvider { mergeStringsForA11y( getTitle().text.toString(), context.getString( R.string.ada_label_client_mac, if (holder.lineItem.content.text == "") { context.getString(R.string.unknown) } else { holder.lineItem.content.text } ), if (device.isOnline) { context.getString(R.string.common_online) } else { context.getString(R.string.common_offline) } ) } } } private fun onItemClick(device: DeviceInIsolation, holder: TPTwoLineItemViewHolder) { if (addDeviceList.contains(device.mac)) { addDeviceList.remove(device.mac) holder.lineItem.setActionChecked(false) } else { device.mac?.let { it1 -> addDeviceList.add(it1) } holder.lineItem.setActionChecked(true) } callback?.chooseDeviceSize(addDeviceList.size) } fun selectAll() { addDeviceList.clear() for (device in currentList) { if (device.mac != hostMac) { device.mac?.let { addDeviceList.add(it) } } } notifyDataSetChanged() } fun deselectAll() { addDeviceList.clear() notifyDataSetChanged() } fun isSelectAll(): Boolean { //hashost if (hasHost) { return addDeviceList.size == itemCount - 1 } else { return addDeviceList.size == itemCount } } fun setEnable(enable: Boolean) { mEnable = enable } interface OnClickCallBack { fun chooseDeviceSize(num: Int) fun getIotClientByMac(mac: String): IotClientBean? } }勾选checkbox好像没有生效
最新发布
01-01
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值