android在代码中怎么使得控件居中,以及代码设置控件selector
2016-07-25 16:36
459 查看
最近在做一个项目,分别是登录前的状态,和登录后的状态,LinearLayout背景颜色和高度需要改变,LinearLayout布局中的TextView字体需要改变,ImageView控件要改变,原来是居中显示的,那么改变控件后,还想要居中,只需要在xml中设置android:layout_gravity="center"属性即可。
ImageView控件的图片,点击和不点击有两种状态,在代码中设置和xml中android:background="@drawable/xxxx" 的效果。
调用处:
ImageView控件的图片,点击和不点击有两种状态,在代码中设置和xml中android:background="@drawable/xxxx" 的效果。
/** * xml的selector对应的java代码设置 * */ private StateListDrawable addStateDrawable(Context context, int idNormal, int idPressed, int idFocused) { StateListDrawable sd = new StateListDrawable(); Drawable normal = idNormal == -1 ? null : context.getResources().getDrawable(idNormal); Drawable pressed = idPressed == -1 ? null : context.getResources().getDrawable(idPressed); Drawable focus = idFocused == -1 ? null : context.getResources().getDrawable(idFocused); //注意该处的顺序,只要有一个状态与之相配,背景就会被换掉 //所以不要把大范围放在前面了,如果sd.addState(new[]{},normal)放在第一个的话,就没有什么效果了 //sd.addState(new int[]{android.R.attr.state_enabled, android.R.attr.state_focused}, focus); //sd.addState(new int[]{android.R.attr.state_pressed, android.R.attr.state_enabled}, pressed); //sd.addState(new int[]{android.R.attr.state_focused}, focus); sd.addState(new int[]{android.R.attr.state_pressed}, pressed); sd.addState(new int[]{android.R.attr.state_enabled}, normal); sd.addState(new int[]{}, normal); return sd; }
调用处:
loginOrRegister_iv.setBackgroundDrawable(addStateDrawable(this, R.mipmap.logined ,R.mipmap.logined_pressed ,R.mipmap.logined_pressed ));
相关文章推荐
- flex 控件的重要属性
- 学习Winform文本类控件(Label、Button、TextBox)
- Delphi控件ListView的属性及使用方法详解
- web下载的ActiveX控件自动更新
- WinForm实现按名称递归查找控件的方法
- C#中父窗口和子窗口之间控件互操作实例
- C#编写ActiveX网页截图控件
- Android编程之Button控件用法实例分析
- Android控件之CheckBox、RadioButton用法实例分析
- 在Android开发中使用自定义组合控件的例子
- 一款超酷的Android自定义加载控件
- Android重写View实现全新的控件
- MFC中动态创建控件以及事件响应实现方法
- WinForm自定义函数FindControl实现按名称查找控件
- Android控件之ProgressBar用法实例分析
- WinForm拖拽控件生成副本的解决方法
- ASP.NET动态添加用户控件的方法
- WinForm遍历窗体所有子控件的方法
- ASP.NET的HtmlForm控件学习及Post与Get的区别概述
- 浅析Bootstrap验证控件的使用