初级——高亮显示正在输入的文本框(StateListDrawable)

也可以让按钮的背景图片随按钮的状态的改变而切换。实际上StateListDrawable 的功能也非常灵活,可以让各种组件的背景前景随状态的改变而切换。有兴趣的可以查看StateListDrawale 这类的api 有很多的状态
例如:
       android:state_checkeable  是否处于可勾选状态
       android:focused  是否处于可获得焦点
       。。。。。。。。
先看以下效果图:第一步鼠标移到文本框输入文字
droidstouch1.gif 
第二步:鼠标移上去在第二行输入文本值

droidstouch2.gif 


这个例子比较简单需要做的就是该两个地方,就可以做到。你可以在res/drawable-mdpi 文件中添加my_colorchange.xml
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android=" http://schemas.android.com/apk/res/android ">
<!-- 指定获得焦点时的颜色 -->
<item android:state_focused="true"
  android:color="#f44"
/>
<!-- 指定失去焦点时的颜色 -->
<item android:state_focused="false"
  android:color="#111"
/>
</selector>

然后在layout/main.xml 中加入以下代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=" http://schemas.android.com/apk/res/android "
android rientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- 使用StateListDrawable资源 -->
<EditText  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:textColor="@drawable/my_image"
/>
<EditText  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:textColor="@drawable/my_image"
/>
</LinearLayout>

就搞定了。java代码就不需要该,就可以了。当然了,如果再加一些别的效果就需要改写java代码了
Java中,可以使用JTextPane组件来实现文本高亮显示。JTextPane可以设置样式,包括字体、颜色、背景等,从而实现高亮显示。 以下是一个简单的示例代码,演示如何在文本框高亮显示文本: ```java import javax.swing.*; import javax.swing.text.*; public class HighlightTextExample { public static void main(String[] args) { JFrame frame = new JFrame("Highlight Text Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JTextPane textPane = new JTextPane(); textPane.setText("This is a text with some highlighted words."); StyledDocument doc = textPane.getStyledDocument(); // 设置样式 Style style = textPane.addStyle("highlight", null); StyleConstants.setBackground(style, Color.YELLOW); StyleConstants.setForeground(style, Color.RED); // 高亮显示文本 String text = textPane.getText(); int startIndex = text.indexOf("highlighted"); int endIndex = startIndex + "highlighted".length(); doc.setCharacterAttributes(startIndex, endIndex - startIndex, textPane.getStyle("highlight"), true); frame.add(textPane); frame.pack(); frame.setVisible(true); } } ``` 在这个示例中,我们首先创建了一个JTextPane组件,并设置了文本。然后,我们获取了JTextPane的StyledDocument对象,并使用addStyle()方法创建了一个名为“highlight”的样式。接下来,我们用getStyle()方法获取这个样式,然后使用setCharacterAttributes()方法将指定的文本区域应用到这个样式,从而实现了高亮显示。 需要注意的是,setCharacterAttributes()方法的第四个参数是一个布尔值,表示是否覆盖原有的样式。如果设为true,就会覆盖原有的样式,否则就会在原有样式的基础上添加新的样式。在这个示例中,我们将其设为true,因为我们只想应用一个样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值