
自定义控件实现android中drawableLeft宽高设置
下载需积分: 41 | 2.6MB |
更新于2025-02-20
| 72 浏览量 | 举报
收藏
### 知识点详解
#### Android可自定义设置drawableLeft宽高的控件
在Android开发中,drawableLeft是一个常用于Button或TextView等控件的属性,用于在控件的左侧添加一个图标。该属性在XML布局文件中被广泛使用,其值为图片资源的引用,例如:
```xml
<Button
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Me"
android:drawableLeft="@drawable/my_icon"/>
```
在上述代码中,`@drawable/my_icon`是drawable目录下的一个图片资源。`drawableLeft`默认情况下会根据图片的原始尺寸来显示。
然而,在实际开发中,我们可能需要对这个图标进行尺寸调整,以确保它与文本内容的布局保持一致性。因此,就需要对`drawableLeft`进行宽高设置。
根据描述中提到的,我们可以使用一个自定义控件来达到设置`drawableLeft`宽高属性的目的。以下是一个简单的自定义TextView控件示例,该控件允许开发者在XML布局文件中直接设置`drawableLeft`的宽高值:
```java
public class DrawableLeftTextView extends TextView {
private int drawableWidth;
private int drawableHeight;
public DrawableLeftTextView(Context context) {
super(context);
}
public DrawableLeftTextView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.DrawableLeftTextView);
drawableWidth = typedArray.getDimensionPixelSize(R.styleable.DrawableLeftTextView_drawableWidth, 0);
drawableHeight = typedArray.getDimensionPixelSize(R.styleable.DrawableLeftTextView_drawableHeight, 0);
typedArray.recycle();
}
@Override
protected void onDraw(Canvas canvas) {
Drawable[] drawables = getCompoundDrawables();
Drawable drawableLeft = drawables[0];
if (drawableLeft != null) {
// Create a new BitmapDrawable with the specified width and height
Drawable.ConstantState state = drawableLeft.getConstantState();
drawableLeft = state.newDrawable();
drawableLeft.setBounds(0, 0, drawableWidth, drawableHeight);
}
setCompoundDrawables(drawableLeft, drawables[1], drawables[2], drawables[3]);
super.onDraw(canvas);
}
}
```
在上述代码中,我们定义了一个`DrawableLeftTextView`类,它继承自`TextView`。我们使用`TypedArray`来获取XML布局文件中指定的`drawableWidth`和`drawableHeight`属性值。在`onDraw`方法中,我们获取了当前的`drawableLeft`,并创建了一个新的`BitmapDrawable`,使用指定的宽度和高度。最后,我们重新设置了控件的`drawableLeft`。
接下来,我们还需要在XML布局文件中定义`DrawableLeftTextView`的属性,以便在使用时能够设置宽度和高度:
```xml
<resources>
<declare-styleable name="DrawableLeftTextView">
<attr name="drawableWidth" format="dimension" />
<attr name="drawableHeight" format="dimension" />
</declare-styleable>
</resources>
```
在定义了属性后,我们就可以在`DrawableLeftTextView`控件中使用这些属性了:
```xml
<com.example.DrawableLeftTextView
android:id="@+id/myCustomTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自定义宽度高度图标"
app:drawableWidth="32dp"
app:drawableHeight="32dp"
app:drawableLeft="@drawable/my_custom_icon"/>
```
在上述代码中,`app:drawableWidth`和`app:drawableHeight`属性被用来设置`drawableLeft`的宽度和高度。
#### LZMA2算法和好压软件
描述中还提到使用LZMA2算法压缩生成的7z格式文件。LZMA2是LZMA算法的多线程版本,是一种高效的数据压缩算法,广泛应用于文件压缩领域。LZMA2算法支持多核处理器并行压缩,以提高压缩速度。
好压(7-Zip for Android)是一款流行的压缩软件,它允许用户在Android设备上进行文件的压缩和解压缩操作。该软件支持多种压缩格式,包括但不限于7z, zip, rar等,并且能够创建具有高压缩率的压缩文件。通过好压软件,用户可以方便地对文件进行压缩打包,并通过自定义设置调整压缩参数来优化压缩效果。
#### 结语
综上所述,在Android开发中,自定义控件允许我们扩展和修改默认控件的行为和表现形式,使得开发者能够根据具体需求对控件进行更精细的控制。通过本文的介绍,我们可以看到如何创建一个可以自定义设置`drawableLeft`宽高的`DrawableLeftTextView`控件,并了解了LZMA2算法和好压软件的基本概念及其在文件压缩中的应用。
相关推荐




















潜_藏
- 粉丝: 13
最新资源
- 快速部署Java应用:使用Docker和Docker Compose教程
- 2020 Popcorn Time Android版:免费高清电影APP下载安装
- Python新手入门:Starter项目解读
- 运用自定义转移学习模型进行股票情感分析
- Jupyter笔记本:涵盖多种数据集的机器学习实践
- 构建完美项目组合:HTML、CSS与JavaScript实践指南
- 私有VPC端点演示:Session Manager与EC2实例交互
- 前端代码重构与网络可访问性提升指南
- 初学者Flask部署机器学习模型实用指南
- Ansible与Terraform部署Docker及Kubernetes集群实践指南
- Shell脚本构建简易密码管理器指南
- 应用TensorFlow2.0与CNN技术实现疟疾检测
- Chrome扩展:Fesco电费单即时查询解决方案
- vseonlinezaimy.ru扩展程序:在线微贷服务指南
- 探索多技术领域项目:优化、图论与云计算
- Cinema HD APK v2.3.5发布 - PC与Android安装指南
- Jeison Daza的个人作品集 - HTML技术展示
- 雅思备考指南:掌握IELTS核心技巧
- 撒丁岛租车服务扩展程序:carrentalinsardinia.com-crx插件
- EPAM天蓝色训练课程深度解析
- 深入解析HTML压缩技术与github.io结合的应用
- HTML技术在yogcat.github.io网站的应用
- Golang实现高并发秒杀系统技术详解及部署流程
- 伪造短信通知器:Symfony开发中作为邮件使用的SMS集成