JAVA代码设置selector

/**
     * 设置图片的selector
     *
     * @param context
     * @param idNormal
     * @param idPressed
     * @param idFocused
     * @param idUnable
     * @return
     */
    public static StateListDrawable newSelector(Context context, int idNormal, int idPressed, int idFocused,
                    int idUnable) {
            StateListDrawable bg = new StateListDrawable();
            Drawable normal = idNormal == -1 ? null : context.getResources().getDrawable(idNormal);
            Drawable pressed = idPressed == -1 ? null : context.getResources().getDrawable(idPressed);
            Drawable focused = idFocused == -1 ? null : context.getResources().getDrawable(idFocused);
            Drawable unable = idUnable == -1 ? null : context.getResources().getDrawable(idUnable);
            // View.PRESSED_ENABLED_STATE_SET
            bg.addState(new int[] { android.R.attr.state_pressed, android.R.attr.state_enabled }, pressed);
            // View.ENABLED_FOCUSED_STATE_SET
            bg.addState(new int[] { android.R.attr.state_enabled, android.R.attr.state_focused }, focused);
            // View.ENABLED_STATE_SET
            bg.addState(new int[] { android.R.attr.state_enabled }, normal);
            // View.FOCUSED_STATE_SET
            bg.addState(new int[] { android.R.attr.state_focused }, focused);
            // View.WINDOW_FOCUSED_STATE_SET
            bg.addState(new int[] { android.R.attr.state_window_focused }, unable);
            // View.EMPTY_STATE_SET
            bg.addState(new int[] {}, normal);
            return bg;
    }
用法:btn.setBackgroundDrawable(newSelector(this, R.drawable.btn_normal, R.drawable.btn_selected,
<span style="white-space:pre">	</span>                                R.drawable.btn_selected, R.drawable.btn_unable));
<pre name="code" class="html">/**
	 * 设置不同状态时其文字颜色
	 * @param normal
	 * @param pressed
	 * @param focused
	 * @param unable
	 * @return
	 */
    private ColorStateList createColorStateList(int normal, int pressed, int cheched, int focused, int unable) {
        int[] colors = new int[] { pressed, cheched, focused, normal, focused, unable, normal };
        int[][] states = new int[7][];
        states[0] = new int[] { android.R.attr.state_pressed, android.R.attr.state_enabled };
        states[1] = new int[] { android.R.attr.state_checked, android.R.attr.state_enabled };
        states[2] = new int[] { android.R.attr.state_enabled, android.R.attr.state_focused };
        states[3] = new int[] { android.R.attr.state_enabled };
        states[4] = new int[] { android.R.attr.state_focused };
        states[5] = new int[] { android.R.attr.state_window_focused };
        states[6] = new int[] {};
        ColorStateList colorList = new ColorStateList(states, colors);
        return colorList;
    }

用法:radioButton.setTextColor(createColorStateList(Color.BLACK, Color.RED, Color.RED, Color.RED, Color.BLACK));

				
时间: 2024-10-15 22:27:40

JAVA代码设置selector的相关文章

JAVA代码设置selector不同状态下的背景

Selector设置button点击效果(详细)以及常见问题https://www.jianshu.com/p/a0ddba6d7969 Android 代码动态设置TextView的背景.颜色Selectorhttps://www.aliyun.com/jiaocheng/33771.html JAVA代码设置selector不同状态下的背景颜色https://blog.csdn.net/ZaoAnDiQiu/article/details/52161386 一个工具类搞定drawable下扎

JAVA代码设置selector不同状态下的背景颜色

代码实现Shape 代码实现Selector StateListDrawable与GradientDrawable 的运用 在Android开发中,我们时常会用到自定义drawable样式,在drawable中设置shape样式或是selector选择器,但是有时如果一个xml中需要用到多个drawable样式,并且里面设置的样式只是有细微的差别改变,那么自定义多个drawable样式会显得比较臃肿,使得drawable的xml文件太多,管理麻烦,所以有时本星觉得可以在代码中创建drawable

Android -- java代码设置margin

我们平常可以直接在xml里设置margin,如: <ImageView android:layout_margin="5dip" android:src="@drawable/image" /> 但是有些情况下,需要在java代码里来写,可是View本身没有setMargin方法,怎么办呢? 通过查阅android api,我们发现android.view.ViewGroup.MarginLayoutParams有个方法setMargins(left,

android 用java代码设置布局、视图View的宽度/高度或自适应

在achat项目中,对话内容的长宽设置为自适应,但是如果文本内容太多,则宽度差不多布满,若自己说的和对方说的都很多内容,则满屏都是文字,则不容易分辨出是来自别人说的还是自己说的.那么需要对本身具有自适应的布局再来个宽度限制. 首先,在xml里面定义layout的layout_width/layout_height都要设置为wrap_content,然后在getView方法里面,一开始就让这个布局wrap_content(为什么xml里面设置了wrap_content,这里还要再设置一遍呢?因为布

JAVA如何设置代理server,s取消代理erver

1.一个简短的引论 代理server(Proxy Server)是一种重要的server安全功能,它的工作主要在开放系统互联(OSI)模型的会话层,从而起到防火墙的作用. 代理server大多被用来连接INTERNET(国际互联网)和INTRANET(局域网).主要功能:就是代理网络用户去取得网络信息.形象的说,它是网络信息的中转站.本文主要介绍怎样使用java代码设置代理server. 主server为了防止被伪用户攻击,统一让用户通过代理server去訪问主server,这样做的安全性是显而

Android有感(9):10.使用XML文件和Java代码控制UI界面

Android推荐使用XML文件设置UI界面,然后用Java代码控制逻辑部分,这体现了MVC思想. MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑. 我们可以在app\src\main\res\layout目录下定义一个XML文件(R.java文件会自

AndroidStudio中使用XML和Java代码混合控制UI界面实现QQ相册照片列表页面

场景 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建Android项目,首先打开activity_main.xml 使用XML设置页面 将其布局改为GridLayout,并设置其行数为3,列数为4,以及设置其id. android:rowCount = "3" android:columnCount = "4" android:id

Android如何在java代码中设置margin

习惯了直接在xml里设置margin(距离上下左右都是10dip),如: <ImageView android:layout_margin="10dip" android:src="@drawable/image" /> 只是有些情况下,需要在java代码里来写. API中,android.view.ViewGroup.MarginLayoutParams有个方法setMargins(left, top, right, bottom).可是View本身没

在Java代码上设置TextView字体大小

部分源码: /** * Set the default text size to a given unit and value. See {@link * TypedValue} for the possible dimension units. * * @param unit The desired dimension unit. * @param size The desired size in the given units. * * @attr ref android.R.styleab