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);

    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章