Android中TextView的常用属性以及自定义的Style图形

本文详细介绍了TextView中常用的属性设置,如编辑状态、输入类型、字符限制等,并展示了如何在AndroidManifest和style.xml中创建无标题应用和自定义View样式。此外,还涵盖了EditText、Drawable的选择和定制,包括圆角图片、点击效果和选择状态的图片设计。
摘要由CSDN通过智能技术生成

1.TextView中可写在Style中的一些常用属性


<item name="android:editable">false</item>	//设置是否可编辑

<item name="android:inputType">numberDecimal/text/textPassword/textMultiLine</item>	//设置输入字符类型数字、文本、密码、多行显示

<item name="android:digits">abcdefghijklmnopqrstuvwxyz_</item> 	//设置允许输入指定字符

<item name="android:cursorVisible">false</item>	//设定光标为显示/隐藏,默认显示

<item name="android:textCursorDrawable">@color/green</item>	//设置光标的颜色为绿色

<item name="android:lines"></item>		//设置文本的行数3行

<item name="android:maxLength">10</item>	//限制显示的文本长度

<item name="android:singleLine">true</item>		//设置单行显示

<item name="android:textColor">@color/bg_gray</item>	//设置文本颜色

<item name="android:textSize">12sp</item>	//设置输入字符大小

<item name="android:textStyle">italic|bold</item>	//设置字形,可以设置一个或多个,用“|”隔开

<item name="android:paddingLeft">5dp</item>	//文字离文字框左边的距离

<item name="android:drawableLeft">@drawable/show1</item>	//图片在文字左边

<item name="android:drawableTop">numberDecimal/text/</item>	//图片在文字上边

2.一些自定义style

(1)app无标题
可在AndroidManifest中定义:

 <application
        android:allowBackup="true"
        android:icon="@drawable/mentalhealth"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/NoTitle"
        >
  </application>

其中:style中的具体内容在style.xml文件中:

 <style name="NoTitle" parent="Theme.AppCompat.DayNight.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>
 </style>

(2)一些TestView样式

    <style name="TestViewStyle" note="TestView通用样式">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textSize">15sp</item>
        <item name="android:orientation">horizontal</item>
        <item name="android:baselineAligned">true</item>
        <item name="android:background">@drawable/textview_bg</item>
    </style>

其中:table_bg中的具体内容可以写在res->drawble.xml文件中:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke
        android:width="1dp"
        android:color="@color/green" />
    <corners
        android:radius="0dp" />
    <solid android:color="#FFFFFF"/>
</shape>

形状如下:
请添加图片描述

(3)一些EditText样式

 <!-- EditText的文字样式   -->
      <style name="EditTextStyle" note="EditText通用编辑框样式">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textSize">15sp</item>
        <item name="android:textColor">@color/black</item>
        <item name="android:gravity">center_vertical</item>
        <item name="android:paddingLeft">5dp</item>
        <item name="android:longClickable">false</item>
        <item name="android:maxLength">15</item>
        <item name="android:digits">.0123456789</item>
    </style>

(4)继承上面EditTextStyle样式的不可编辑的EditTest:parent

    <style name="EditEnableStyle" parent="EditTextStyle" note="不可编辑框长度为130dp的EditText">
        <item name="android:layout_width">130dp</item>
        <item name="android:editable">false</item>
    </style>

3.一些自定义drawable

如下定义了一个任意控件的background属性,background中可以是UI提供的png图片,也可以是自定义的demo_bg(xml文件)。

 <item name="android:background">@drawable/demo_bg</item>  

(1)长方形上方带圆角的图片

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="#398977"/>
    <corners android:topLeftRadius="8dp"
        android:topRightRadius="8dp" />
</shape>

形状如下:
请添加图片描述
(2)长方形带圆角的图片

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:top="1dp">
    <shape android:shape="rectangle">
      <solid android:color="@color/TlCyan"/>
      <corners
          android:radius="15dp" />
    </shape>
  </item>
</layer-list>

形状如下:
请添加图片描述

(3)有点击效果的图片

点击状态的效果是click图片;不能点击的效果是unselect图片,控件正常情况下的状态是normal图片

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/click"></item>
    <item android:state_enabled="false" android:drawable="@drawable/unselect"></item>
    <item android:drawable="@drawable/normal"></item>
</selector>

(4)有选择效果的图片

点击时为check图片,未点击时为uncheck图片

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
	<item android:state_checked="false" android:drawable="@drawable/uncheck"/>
	<item android:state_checked="true" android:drawable="@drawable/uncheck"/>
</selector>

(5)有红色光标效果的图片

长方形,光标宽为2dp

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <size android:width="2dp"/>
    <solid android:color="@color/Red"/>
</shape>

(6)有线条效果的图片
下和右有红色线条,背景为白色的图片

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape>
            <solid android:color="@color/Red" />
        </shape>
    </item>

    <item
        android:right="3dp"
        android:bottom="3dp">
        <shape>
            <solid
                android:color="@color/white">
            </solid>
        </shape>
    </item>
</layer-list>

形状如下:

请添加图片描述

(7)一些图片
关于pathData的使用,可参考Android vector 标签 pathData 详解这篇文章。利用pathData可绘制出许多图案。

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:alpha="0.9"
    android:tint="#45BF3C"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
    <path
        android:fillColor="#7ca344"
        android:pathData="M9,16,L4,12,l,-1,2,L9,19,21,7,l,-1,-2,L,9,16" />
</vector>

形状如下:
请添加图片描述

Android 15,生成Wi-Fi的随机MAC地址通常涉及到修改设备的网络配置文件或者使用系统的反射API。但是请注意,这通常是开发者权限操作,并且不建议在生产环境直接这样做,因为这可能会违反用户隐私政策或者导致系统稳定性问题。 以下是使用Java的一个示例,展示如何通过反射获取并设置Wi-Fi适配器的MAC地址: ```java import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import java.net.InetAddress; import java.nio.ByteBuffer; // 获取Wi-Fi管理器实例 WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); // 获取当前连接的Wi-Fi信息 WifiInfo currentWifiInfo = wifiManager.getConnectionInfo(); // 创建一个byte数组,用于存储MAC地址 byte[] macBytes = new byte[6]; macBytes[0] = (byte)(currentWifiInfo.getMacAddress().substring(0, 2).getBytes()[0]); macBytes[1] = (byte)(currentWifiInfo.getMacAddress().substring(1, 3).getBytes()[0]); macBytes[2] = (byte)(currentWifiInfo.getMacAddress().substring(2, 4).getBytes()[0]); macBytes[3] = (byte)(currentWifiInfo.getMacAddress().substring(3, 5).getBytes()[0]); macBytes[4] = (byte)(currentWifiInfo.getMacAddress().substring(4, 6).getBytes()[0]); macBytes[5] = (byte)(currentWifiInfo.getMacAddress().substring(5, 7).getBytes()[0]); // 由于随机MAC需要改变部分二进制值,这里只是一个简单的例子,你可以根据需求生成真正的随机数 // 使用Random类替换上述硬编码值 ByteBuffer randomMac = ByteBuffer.wrap(macBytes); randomMac.put((byte) (Math.random() * 255)); randomMac.rewind(); // 将指针移动到起始位置 // 转换回字符串形式 String randomMacStr = new String(randomMac.array()); // 设置新的随机MAC地址,这个操作可能需要root权限 try { Method setMacMethod = WifiInfo.class.getDeclaredMethod("setMacAddress", String.class); setMacMethod.setAccessible(true); // 可能需要在无权限的情况下使用 setMacMethod.invoke(currentWifiInfo, randomMacStr); } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { e.printStackTrace(); } // 保存或同步新配置,可能需要额外的操作 ``` 请注意,这个示例仅供参考,实际应用你需要处理异常,以及确保操作在合适的权限下进行。此外,在Android 15及更高版本,某些功能可能受到更严格的限制,使用时需谨慎。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值