当前位置: 首页 > 知识库问答 >
问题:

java - android 点击后颜色没有变化是为什么?

毕胡非
2023-08-18

如题,android 点击后颜色没有变化是为什么? 以下是具体代码

public class HomeFragmentVM extends ViewModel {    @SuppressLint("StaticFieldLeak")    private HomeFragment fragment;    public static final String SORT_COLUMN_AUTO = "auto";    public static final String SORT_COLUMN_ACTIVE = "active";    public static final String SORT_COLUMN_DISTANCE = "distance";    public static final String SORT_COLUMN_MATCH = "match";    public static final String SORT_ICON_DOWN = "sort:icon:down";    public static final String SORT_ICON_UP = "sort:icon:up";    public final MutableLiveData<SearchForm> searchForm = new MutableLiveData<>();    @SuppressLint("StaticFieldLeak")    public View rootView;    private static class SearchForm {        public String sortType = "asc";        public String sortColumn = SORT_COLUMN_ACTIVE;    }    public HomeFragmentVM(HomeFragment fragment, View rootView) {        this.fragment = fragment;        this.rootView = rootView;        this.init();    }    private void init() {        this.searchForm.setValue(new SearchForm());    }    public int getSortTextColor(String sortColumn) {        SearchForm searchForm = this.searchForm.getValue();        int color = R.color.color_333;        int colorActive = R.color.color_red_1;        if (searchForm == null) {            return color;        }        if (searchForm.sortColumn.equals(sortColumn)) {            return colorActive;        }        return color;    }    public void handleSort(String column) {        SearchForm searchForm = this.searchForm.getValue();        if (searchForm.sortColumn.equals(column) && column.equals(SORT_COLUMN_AUTO)) {            return ;        }        if (searchForm.sortColumn.equals(column)) {            // 重复点击搜索项 - 取消排序            searchForm.sortColumn = null;            searchForm.sortType = null;        } else {            searchForm.sortColumn = column;            if (column.equals(SORT_COLUMN_AUTO)) {                searchForm.sortType = null;            } else {                if (searchForm.sortType == null) {                    searchForm.sortType = "asc";                }                if (searchForm.sortType.equals("asc")) {                    searchForm.sortType = "desc";                }                if (searchForm.sortType.equals("desc")) {                    searchForm.sortType = null;                }            }        }        // 更新数据        this.searchForm.setValue(searchForm);    }

视图代码如下:

<?xml version="1.0" encoding="utf-8"?><layout    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">    <data>        <import type="com.gv.yinyuan.app.android.consts.AppConsts"/>        <variable name="vm" type="com.gv.yinyuan.app.android.vm.HomeFragmentVM"/>    </data>    <TextView        style="@style/fragment_home_sort_text"        android:text="综合"        android:textColor='@{vm.getSortTextColor(vm.SORT_COLUMN_AUTO)}'        android:layout_marginEnd="10dp"        android:onClick='@{(view) -> vm.handleSort(vm.SORT_COLUMN_AUTO)}'    /></layout>

共有2个答案

鞠泰平
2023-08-18

layout 文件写错了
android:textColor="@={model.xxx}"
应该采用双向绑定的方式,然后这个model.xxx 应该是一个 Observable,
然后点击 TextView 后执行操作,过程中更新改变 model.xxx,这样就可以实现点击变化颜色

锺离飞鸣
2023-08-18

Data Binding 设置是这样吗

HomeFragmentBinding binding = DataBindingUtil.setContentView(this, R.layout.fragment_home);HomeFragmentVM viewModel = new HomeFragmentVM(fragment, rootView);binding.setVm(viewModel);

用 ObservableField:

public final ObservableField<SearchForm> searchForm = new ObservableField<>();// ...public void handleSort(String column) {    SearchForm searchForm = this.searchForm.get();    // 更新 searchForm    // ...    this.searchForm.set(searchForm); // 触发绑定更新}
 类似资料:
  • 上面的单选按钮代码,但是在选择之后,我需要将特定的单选按钮颜色单独更改为蓝色

  • 我有一个灰色的抽屉。无论何时用户喜欢一张图片,这可绘制的,但应在颜色黑色(阿尔法的可绘制需要停留)。 我正在这样做:

  • 问题内容: 我正在开发一个捕获屏幕快照并从捕获的图像创建视频的应用程序。但是问题在于,当生成视频时,生成的视频中的颜色非常粉红色。我认为这是因为我正在使用BufferedImage.TYPE_3BYTE_BGR类型操纵捕获的图像以显示光标。有人可以告诉我如何解决此问题,我希望视频的颜色与屏幕的实际颜色相同。 为了捕获屏幕图像,我正在执行以下操作: 对于操作图像,我正在做如下操作: 请告诉我如何获取

  • 本文向大家介绍Android中button点击后字体的变色效果,包括了Android中button点击后字体的变色效果的使用技巧和注意事项,需要的朋友参考一下 button的点击效果无疑是非常简单的,以致于我懒到当UI告诉我说在点击的时候button字体的颜色也要随着背景改变的时候我毫不犹豫的告诉他让他切两个图过来,后来想想着实是不太靠谱,于是了解了一下如何添加button点击的字体颜色变化效果。

  • 我刚开始编程,这是我第一次尝试学习新东西。我不知道我的代码有什么问题,因为它不想工作。我所需要的只是通过点击div来改变bg的颜色。如果在“function”之前删除第一行代码,它就会起作用,但只有在重新加载页面时才起作用。

  • 请帮忙 设计时的菜单图标 因为这里的菜单图标颜色是黑色的,但是当我运行应用程序时,菜单图标颜色变成白色。我不想它是白色的。请任何人协助。 运行应用程序后的菜单图标