LWUIT自定义灵活Style的Component

当你使用LWUIT的这些Component时,如果一个页面中的布局比较复杂,组件 很多,而且页面比较多时,常用的组件诸如 Label,Button,TextField,TextArea 等会用的非常平凡。用起这些组件时,我们常常会设置它的Style,Style很像 web里的css,它能够让我们自定义 Border,Font,FgColor,BgColor,Margin,Padding,设置一个组件的 Style的代码 很简单:

代码

this.getStyle().setBorder(Border border)

但是大多数的组件都有Style和selectedStyle,能够被点击的Button及其子 类还有pressedStyle,以上面一句为例,它仅仅只能设置这个组件未选中的时候 的Border,当选中它时,又会回到系统代码中设定的模样。一个页面有很多组件 ,大多数的组件都要设置 Style(选中和未选中的Style),虽然代码是很简单 ,但是一个页面写下来,你会发现你至少一半的代码都花在布局和设置样式上了 ,代码看起来非常臃肿。

好在LWUIT是开源的,我们可以修改它的源代码来自定义这些UI的方法,找到 Component.java文件,我们只需要在这个文件中添加几个方法来简化我们的 Style设置。

以下是我在Component.java类中添加的一些方法,代码我写的比较粗糙,你 们可以按照自己的方式来写, 理论上每个方法都应该有两个参数,未选中和选 中的状态,传参时可以为null,需要进行一些判断以适合大多数的情况。

代码

//1469行起是添加的代码
     /**
      * 设置自定义的Font
      * @param font
      */
     public void setCustomFont(Font font) {
         this.getStyle().setFont(font);
         this.getSelectedStyle().setFont(font);
     }
     /**
      * 设置水平方向Margin
      * @param margin
      */
     public void setCustomHorizontalMargin(int margin) {
         this.getStyle().setMargin(Component.LEFT,  margin);
         this.getStyle().setMargin(Component.RIGHT,  margin);
         this.getSelectedStyle().setMargin(Component.LEFT,  margin);
         this.getSelectedStyle().setMargin(Component.RIGHT,  margin);
     }
     /**
      * 设置自定义的Border
      * @param border
      */
     public void setCustomBorder(Border border){
         this.getStyle().setBorder(border);
         this.getSelectedStyle().setBorder(border);
     }
     /**
      *设置自定义FgColor
      * @param unsectedColor
      *              未选中时的颜色
      * @param selectedColor
      *              选中时的颜色
      */
     public void setCustomFgColor(int unsectedColor, int  selectedColor){
         this.getStyle().setFgColor(unsectedColor);
         this.getSelectedStyle().setFgColor (selectedColor);
     }
     /**
      * 设置自定义的Style
      *              Style包含选中和未选中的情况 ,属性包含Margin,Padding,Border,FgColor,BgColor,Font等
      * @param unselectedStyle
      * @param selectedStyle
      */
     public void setCustomStyle(Style unselectedStyle, Style  selectedStyle){
         this.setStyle(unselectedStyle);
         this.setSelectedStyle(selectedStyle);
     }

时间: 2024-11-01 00:45:55

LWUIT自定义灵活Style的Component的相关文章

Magicodes.WeiChat——自定义knockoutjs template、component实现微信自定义菜单

本人一向比较喜欢折腾,玩了这么久的knockoutjs,总觉得不够劲,于是又开始准备折腾自己了. 最近在完善Magicodes.WeiChat微信开发框架时,发现之前做的自定义菜单这块太不给力了,而各种第三方平台在这一块做得也比较渣,功能不全不说,界面还很不友好,于是决心重整一版,以满足需求. 下面先上图,新的UI界面如下所示:   如何实现这个功能呢?下面请等我一一道来吧. 左侧树形结构绑定 HTML模板如下所示: <div class="dd" id="nestab

深入理解Android 自定义attr Style styleable以及其应用

相信每一位从事Android开发的猿都遇到过需要自己去自定义View的需求,如果想通过xml指定一些我们自己需要的参数,就需要自己声明一个styleable,并在里面自己定义一些attr属性,这个过程相信大家都比较了解.当然,属性其实也不一定需要和View配合使用,比如我想通过一个Theme中的style对一个库进行一些简单参数的配置,这应该怎么做呢?我今天在封装一个库时在这个地方浪费了较多时间,最后没办法,到处搜搜资料,记录在这里吧,相信对大家都有帮助. attr和styleable的关系 首

Android自定义Style实现方法_Android

styles.xml如下: [html] 复制代码 代码如下: <resources xmlns:android="http://schemas.android.com/apk/res/android">      <style name="AppBaseTheme" parent="android:Theme.Light">      </style>      <style name="Ap

Android自定义Style

styles.xml如下: <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppBaseTheme" parent="android:Theme.Light"> </style> <style name="AppTheme" parent="AppBase

WPF自定义控件与样式(13)-自定义窗体Window &amp; 自适应内容大小消息框MessageBox

原文:WPF自定义控件与样式(13)-自定义窗体Window & 自适应内容大小消息框MessageBox 一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 自定义Window窗体样式: 基于自定义窗体实现自定义MessageBox消息提示框: 二.自定义Window窗体样式 自定义的Window窗体效果:   因为WPF默认的窗体比较简陋,大都需要自己

Android对话框的自定义及透明效果

着手点在于Dialog,如要透明效果,则需要使用自定义的style,去除背景图片.参照代码     <style name="progress_dialog" parent="@android:style/Theme.Dialog">           <item name="android:windowFrame">@null</item>           <item name="and

自定义view-Android自定义View默认字符串如何实现

问题描述 Android自定义View默认字符串如何实现 //加载样式 TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.TitleBarView, defStyleAttr, 0); String mainTitle = typedArray.getString(R.attr.main_title); setTitle(mainTitle); 程序常常因为使用者没有设置main_title 而崩溃

Android下用Activity实现圆角的自定义弹窗

     这里我们使用9patch制作一个背景,找到SDK目录下的tools目录,双击draw9patch.bat文件,如下图: 打开想要编辑的文件,进行编辑(9patch的编辑教程自寻). 编辑完成后,保存到项目的drawable目录下,文件以*.9.png结尾. 打开values文件夹下的styles.xml文件,自定义一个style: <style name="Pop" parent="@android:style/Theme.Dialog"> &

android framework层面开发 style问题

问题描述 现在开发中遇到如下问题:因为公司里面是对android的framework做了改动的,android.R.*对应的资源文件也被改动了.这样我在eclipse里面单独编译一个应用的时候就遇到某资源无法找到导致编译不过的问题...比如D:workspaceMyApplicationresvaluesstyles.xml:25: error: Error retrieving parent for item: No resource found that matches the given