android—label窗口——基础编

简介:

今天写了一个关于label的显示窗口,代码量也挺简单的,大家一看就明白。不管在哪里我们做软件的都需要用到label

先让我们看一下图先。

 

 

 
  1. package com.smart.widget; 
  2.  
  3. import android.content.Context; 
  4. import android.util.AttributeSet; 
  5. import android.view.LayoutInflater; 
  6. import android.widget.LinearLayout; 
  7. import android.widget.TextView; 
  8.  
  9. import com.smart.acitivy.R; 
  10.  
  11. public class LabelEdit extends LinearLayout{ 
  12.  
  13.     private TextView textView; 
  14.     private String labelText; 
  15.     private int labelFontSize; 
  16.     private String labelPosition; 
  17.  
  18.     public LabelEdit(Context context, AttributeSet attrs) 
  19.     { 
  20.         super(context, attrs); 
  21.         //  读取labelText属性的资源ID 
  22.         int resourceId = attrs.getAttributeResourceValue(null"labelText"0); 
  23.         //  未获得资源ID,继续读取属性值 
  24.         if (resourceId == 0
  25.             labelText = attrs.getAttributeValue(null"labelText"); 
  26.         //  从资源文件中获得labelText属性的值 
  27.         else 
  28.             labelText = getResources().getString(resourceId); 
  29.         //  如果按两种方式都未获得labelTex属性的值,表示未设置该属性,抛出异常 
  30.         if (labelText == null
  31.         { 
  32.             throw new RuntimeException("必须设置labelText属性."); 
  33.         } 
  34.         //  获得labelFontSize属性的资源ID 
  35.         resourceId = attrs.getAttributeResourceValue(null"labelFontSize"0); 
  36.         //  继续读取labelFontSize属性的值,如果未设置该属性,将属性值设为14 
  37.         if (resourceId == 0
  38.             labelFontSize = attrs.getAttributeIntValue(null"labelFontSize"
  39.                     14); 
  40.         //  从资源文件中获得labelFontSize属性的值 
  41.         else 
  42.             labelFontSize = getResources().getInteger(resourceId); 
  43.         //  获得labelPosition属性的资源ID 
  44.         resourceId = attrs.getAttributeResourceValue(null"labelPosition"0); 
  45.         //  继续读取labelPosition属性的值 
  46.         if (resourceId == 0
  47.             labelPosition = attrs.getAttributeValue(null"labelPosition"); 
  48.         //  从资源文件中获得labelPosition属性的值 
  49.         else 
  50.             labelPosition = getResources().getString(resourceId); 
  51.         //  如果未设置labelPosition属性值,将该属性值设为left 
  52.         if (labelPosition == null
  53.             labelPosition = "left"
  54.          
  55.         String infService = Context.LAYOUT_INFLATER_SERVICE; 
  56.         LayoutInflater li; 
  57.         //  获得LAYOUT_INFLATER_SERVICE服务 
  58.         li = (LayoutInflater) context.getSystemService(infService); 
  59.         LinearLayout linearLayout = null
  60.         //  根据labelPosition属性的值装载不同的布局文件 
  61.         if("left".equals(labelPosition)) 
  62.             linearLayout = (LinearLayout)li.inflate(R.layout.labeledittext_horizontal, this); 
  63.         else if("top".equals(labelPosition)) 
  64.             linearLayout = (LinearLayout)li.inflate(R.layout.labeledittext_vertical, this); 
  65.         else 
  66.             throw new RuntimeException("labelPosition属性的值只能是left或top."); 
  67.          
  68.         //  下面的代码从相应的布局文件中获得了TextView对象,并根据LabelTextView的属性值设置TextView的属性 
  69.         textView = (TextView) findViewById(R.id.textview); 
  70.         textView.setTextSize((float)labelFontSize);          
  71.         textView.setTextSize(labelFontSize); 
  72.         textView.setText(labelText); 
  73.  
  74.     } 
  75.  

我看一下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,如需转载请自行联系原作者

相关文章
|
7月前
|
Android开发 开发者
Android播放器实现视频窗口实时放大缩小功能
很多开发者希望Android播放端实现视频窗口的放大缩小功能,为此,我们做了个简单的demo,通过播放端回调RGB数据,直接在上层view操作处理即可,Github:https://github.com/daniulive/SmarterStreaming
179 0
|
8月前
|
Android开发
Android 中PopupWindow弹出式窗口的使用
Android 中PopupWindow弹出式窗口的使用
39 0
|
Android开发
Android 裁剪摄像头预览窗口-SurfaceView
Android 裁剪摄像头预览窗口-SurfaceView
535 0
Android 裁剪摄像头预览窗口-SurfaceView
|
搜索推荐 Java Linux
Android基础入门教程
Android是一种基于Linux的自由及开放源代码的操作系统,Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
204 0
|
XML 存储 移动开发
Android基础 | 关于Activity你应该明白的一切
Activity 作为一个老生常谈的话题,它是我们刚接触Android开发就遇到,虽然已有一段时间开发经验,但谈起完全搞懂Activity相关,不敢妄言,故结合个人理解及书籍参考,简单总结一下 Activity基础相关知识,其中也留出了一些有意思的问题。
141 0
|
XML 存储 安全
Android四大组件全面解析,夯实基础。(下)
Android四大组件 lay a solid foundation 夯实基础
167 0
|
Android开发
Android四大组件全面解析,夯实基础。(中)
Android四大组件 lay a solid foundation 夯实基础
179 0
Android四大组件全面解析,夯实基础。(中)
|
存储 设计模式 前端开发
Android四大组件全面解析,夯实基础。(上)
Android四大组件 lay a solid foundation 夯实基础
108 0
|
安全 Java 调度
Android多线程编程——线程基础
Android沿用了Java的线程模型,一个Android应用在创建的时候会开启一个线程,我们叫它主线程或者UI线程。
208 0
Android多线程编程——线程基础
|
Java Android开发
移动应用程序设计基础——Android环境构建与Activity生命周期
安装智能手机开发相关软件平台,并在此基础上测试Activity的生命周期过程。 5、 完成智能手机开发平台安装、以及相关配置; 6、 并实现Hello World; 7、 添加Log日志,通过Log日志验证Ac 1、 安装JAVA JDK 2、 安装Android Studio,熟悉AS的基本操作,改变AS的字体,显示方式;截图和文字说明。 3、 建立新项目,实现Hello World。说明各个文件的作用,以及各个关键语句的作用或含义,给出程序的运行结果。 4、 设置生命周期的Log日志,分别执行相关操作
231 0
移动应用程序设计基础——Android环境构建与Activity生命周期