android—label窗口——基础编
今天写了一个关于label的显示窗口,代码量也挺简单的,大家一看就明白。不管在哪里我们做软件的都需要用到label
先让我们看一下图先。
- package com.smart.widget;
- import android.content.Context;
- import android.util.AttributeSet;
- import android.view.LayoutInflater;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import com.smart.acitivy.R;
- public class LabelEdit extends LinearLayout{
- private TextView textView;
- private String labelText;
- private int labelFontSize;
- private String labelPosition;
- public LabelEdit(Context context, AttributeSet attrs)
- {
- super(context, attrs);
- // 读取labelText属性的资源ID
- int resourceId = attrs.getAttributeResourceValue(null, "labelText", 0);
- // 未获得资源ID,继续读取属性值
- if (resourceId == 0)
- labelText = attrs.getAttributeValue(null, "labelText");
- // 从资源文件中获得labelText属性的值
- else
- labelText = getResources().getString(resourceId);
- // 如果按两种方式都未获得labelTex属性的值,表示未设置该属性,抛出异常
- if (labelText == null)
- {
- throw new RuntimeException("必须设置labelText属性.");
- }
- // 获得labelFontSize属性的资源ID
- resourceId = attrs.getAttributeResourceValue(null, "labelFontSize", 0);
- // 继续读取labelFontSize属性的值,如果未设置该属性,将属性值设为14
- if (resourceId == 0)
- labelFontSize = attrs.getAttributeIntValue(null, "labelFontSize",
- 14);
- // 从资源文件中获得labelFontSize属性的值
- else
- labelFontSize = getResources().getInteger(resourceId);
- // 获得labelPosition属性的资源ID
- resourceId = attrs.getAttributeResourceValue(null, "labelPosition", 0);
- // 继续读取labelPosition属性的值
- if (resourceId == 0)
- labelPosition = attrs.getAttributeValue(null, "labelPosition");
- // 从资源文件中获得labelPosition属性的值
- else
- labelPosition = getResources().getString(resourceId);
- // 如果未设置labelPosition属性值,将该属性值设为left
- if (labelPosition == null)
- labelPosition = "left";
- String infService = Context.LAYOUT_INFLATER_SERVICE;
- LayoutInflater li;
- // 获得LAYOUT_INFLATER_SERVICE服务
- li = (LayoutInflater) context.getSystemService(infService);
- LinearLayout linearLayout = null;
- // 根据labelPosition属性的值装载不同的布局文件
- if("left".equals(labelPosition))
- linearLayout = (LinearLayout)li.inflate(R.layout.labeledittext_horizontal, this);
- else if("top".equals(labelPosition))
- linearLayout = (LinearLayout)li.inflate(R.layout.labeledittext_vertical, this);
- else
- throw new RuntimeException("labelPosition属性的值只能是left或top.");
- // 下面的代码从相应的布局文件中获得了TextView对象,并根据LabelTextView的属性值设置TextView的属性
- textView = (TextView) findViewById(R.id.textview);
- textView.setTextSize((float)labelFontSize);
- textView.setTextSize(labelFontSize);
- textView.setText(labelText);
- }
- }
我看一下Label类
package com.smart.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.smart.acitivy.R;
public class LabelEdit extends LinearLayout{
private TextView textView;
private String labelText;
private int labelFontSize;
private String labelPosition;
public LabelEdit(Context context, AttributeSet attrs)
{
super(context, attrs);
// 读取labelText属性的资源ID
int resourceId = attrs.getAttributeResourceValue(null, "labelText", 0);
// 未获得资源ID,继续读取属性值
if (resourceId == 0)
labelText = attrs.getAttributeValue(null, "labelText");
// 从资源文件中获得labelText属性的值
else
labelText = getResources().getString(resourceId);
// 如果按两种方式都未获得labelTex属性的值,表示未设置该属性,抛出异常
if (labelText == null)
{
throw new RuntimeException("必须设置labelText属性.");
}
// 获得labelFontSize属性的资源ID
resourceId = attrs.getAttributeResourceValue(null, "labelFontSize", 0);
// 继续读取labelFontSize属性的值,如果未设置该属性,将属性值设为14
if (resourceId == 0)
labelFontSize = attrs.getAttributeIntValue(null, "labelFontSize",
14);
// 从资源文件中获得labelFontSize属性的值
else
labelFontSize = getResources().getInteger(resourceId);
// 获得labelPosition属性的资源ID
resourceId = attrs.getAttributeResourceValue(null, "labelPosition", 0);
// 继续读取labelPosition属性的值
if (resourceId == 0)
labelPosition = attrs.getAttributeValue(null, "labelPosition");
// 从资源文件中获得labelPosition属性的值
else
labelPosition = getResources().getString(resourceId);
// 如果未设置labelPosition属性值,将该属性值设为left
if (labelPosition == null)
labelPosition = "left";
String infService = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater li;
// 获得LAYOUT_INFLATER_SERVICE服务
li = (LayoutInflater) context.getSystemService(infService);
LinearLayout linearLayout = null;
// 根据labelPosition属性的值装载不同的布局文件
if("left".equals(labelPosition))
linearLayout = (LinearLayout)li.inflate(R.layout.labeledittext_horizontal, this);
else if("top".equals(labelPosition))
linearLayout = (LinearLayout)li.inflate(R.layout.labeledittext_vertical, this);
else
throw new RuntimeException("labelPosition属性的值只能是left或top.");
// 下面的代码从相应的布局文件中获得了TextView对象,并根据LabelTextView的属性值设置TextView的属性
textView = (TextView) findViewById(R.id.textview);
textView.setTextSize((float)labelFontSize);
textView.setTextSize(labelFontSize);
textView.setText(labelText);
}
}
本文转自 llb988 51CTO博客,原文链接:http://blog.51cto.com/llb988/495893,如需转载请自行联系原作者
android—label窗口——基础编相关推荐
- android登录窗口——基础编
大家一定在CS/BS的程序有登录窗口,ANDROID也应该是,下面我来做了一个界面欢迎大家参考! main 代码 package net.blogjava.mobile; import android ...
- [编转]Android localsocket 的基础和使用实践: 02
在上一节里,谈到了基础和具体是实践实现: 这一节涉及调试和具体的实践测试: 例子源码在: http://download.csdn.net/detail/goleftgoright/4183596 下 ...
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第二章:Android App 开发基础
第 2 章 Android App开发基础 本章介绍基于Android系统的App开发常识,包括以下几个方面:App开发与其他软件开发有什么不一 样,App工程是怎样的组织结构又是怎样配置的,App开 ...
- Android 的窗口管理系统 (View, Canvas, WindowManager)
Android 的窗口管理系统 (View, Canvas, WindowManager) 我们知道Android 应用程序是怎么创建出来的,大概的流程是 ActivityManagerService ...
- Android Studio窗口组成
Android Studio窗口组成 图2-1 AndroidStudio窗口构成图 1.工具栏:提供各种操作,包括运行.调试.AVD管理等 2.导航栏:提供对项目的导航,以及对打开.修改文件.对项目 ...
- Android 之窗口小部件详解--App Widget
1 App Widget简介 App Widget是应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新.你可以通过一个App Widge ...
- Android 之窗口小部件高级篇--App Widget 之 RemoteViews - 跨到对岸去
在之前的一篇博文( Android 之窗口小部件详解--App Widge t)中,已经介绍了App Widget的基本用法和简单实例.这篇主要讲解 App Widget 的高级内容,即通过 Remo ...
- Android 核心分析之十二Android GEWS窗口管理之基本架构原理
Android GWES之窗口管理之基本构架原理 Android的窗口管理是C/S模式的.Android中的Window是表示Top Level等顶级窗口的概念.DecorView是Window的To ...
- Android视频开发基础
Android视频开发基础 版权声明:本文为[viclee]原创,如需转载请注明出处~ https://blog.csdn.net/goodlixueyong/article/details/6205 ...
最新文章
- springmvc是如何和前端页面联系起来的
- Java中的命令设计模式
- 【HDU - 5605】 geometry(水,数学题,推公式)
- 为什么物联网大数据平台,使用TDengine,可不要redis, kafka, spark等软件?
- sublime3使用笔记
- 使用Angular Router导航基础
- layer弹窗在键盘按回车将反复刷新_人生减负指南——iPad Pro+妙控键盘上手体验...
- java ajax_Ajax Java示例
- PHP 微信网页授权开发
- 【C语言】游戏管理系统简单设计
- JAVA实战小项目——图书馆管理系统
- 客户关系管理系统(Customer Relationship Management)
- git Untracked Files Prevent Rebase
- FPGA基础之cyclone_iv资源概述
- SQL实时库存数量结存
- vue 引入字体文件
- easyUI中combobox中idFeild和textFeild的取值方法
- 白炽灯的用途和工作原理
- C程序设计语言之第1章 导言
- 定义一个类,并且在测试类中使用