返回列表 發帖

MeSelfUI

  1. <LabelEdit
  2.         android:layout_width="fill_parent"
  3.         android:layout_height="wrap_content"
  4.         android:password="true"
  5.         labelText="@string/password_lbl"
  6.         fontSize="20"
  7.         labelPosition="left"
  8.          />
複製代碼

  1. int resourceId = attrs.getAttributeResourceValue(null, "labelText", 0);
  2.                 if(resourceId == 0)
  3.                         labelText = attrs.getAttributeValue(null,"labelText");
  4.                 else
  5.                         labelText = this.getResources().getString(resourceId);
複製代碼

TOP

  1. resourceId = attrs.getAttributeResourceValue(null, "fontSize", 0);
  2.                 if(resourceId == 0)
  3.                         fontSize = attrs.getAttributeIntValue(null,"fontSize",14);
  4.                 else
  5.                         fontSize = this.getResources().getInteger(resourceId);
  6.                
複製代碼

TOP

  1. resourceId = attrs.getAttributeResourceValue(null, "labelPosition", 0);
  2.                 if(resourceId == 0)
  3.                         labelPosition = attrs.getAttributeValue(null,"labelPosition");
  4.                 else
  5.                         labelPosition = this.getResources().getString(resourceId);
  6.                
  7.                 if(labelPosition == null)
  8.                         labelPosition = "left";
複製代碼

TOP

  1. resourceId = attrs.getAttributeResourceValue(namespace, "password", 0);
  2.                 if (resourceId == 0)
  3.                         isPassword = attrs.getAttributeValue(namespace, "password");
  4.                 else
  5.                         isPassword = getResources().getString(resourceId);
  6.                 if (isPassword == null)
  7.                         isPassword = "false";
複製代碼

TOP

本帖最後由 ray 於 2012-11-2 20:01 編輯
  1. textView = new TextView(context);
  2.                 textView.setTextSize(fontSize);
  3.                 textView.setText(labelText);
  4.                 this.addView(textView);
複製代碼

TOP

  1. editText = new EditText(context);
  2.                 editText.setWidth(50000);
  3.                 if(isPassword.equals("true"))
  4.                         editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
  5.                 this.addView(editText);
複製代碼

TOP

  1. package com.ray.widget;

  2. import android.content.Context;
  3. import android.text.method.PasswordTransformationMethod;
  4. import android.util.AttributeSet;
  5. import android.widget.EditText;
  6. import android.widget.LinearLayout;
  7. import android.widget.TextView;

  8. public class LabelEdit extends LinearLayout
  9. {
  10.         private final String namespace = "http://schemas.android.com/apk/res/android";
  11.         private TextView textView;
  12.         private EditText editText;
  13.         private String labelText;
  14.         private int fontSize;
  15.         private String isPassword;
  16.         private String labelPosition;
  17.        
  18.         public LabelEdit(Context context,AttributeSet attrs)
  19.         {
  20.                 super(context,attrs);
  21.                
  22.                 int resourceId = attrs.getAttributeResourceValue(null, "labelText", 0);
  23.                 if(resourceId == 0)
  24.                         labelText = attrs.getAttributeValue(null,"labelText");
  25.                 else
  26.                         labelText = this.getResources().getString(resourceId);
  27.                
  28.                 if(labelText == null)
  29.                         throw new RuntimeException("必須設定labelText屬性!");
  30.                
  31.                 resourceId = attrs.getAttributeResourceValue(null, "fontSize", 0);
  32.                 if(resourceId == 0)
  33.                         fontSize = attrs.getAttributeIntValue(null,"fontSize",14);
  34.                 else
  35.                         fontSize = this.getResources().getInteger(resourceId);
  36.                
  37.                 resourceId = attrs.getAttributeResourceValue(null, "labelPosition", 0);
  38.                 if(resourceId == 0)
  39.                         labelPosition = attrs.getAttributeValue(null,"labelPosition");
  40.                 else
  41.                         labelPosition = this.getResources().getString(resourceId);
  42.        
  43.                 if(labelPosition == null)
  44.                         labelPosition = "left";
  45.                
  46.                 resourceId = attrs.getAttributeResourceValue(namespace, "password", 0);
  47.                 if (resourceId == 0)
  48.                         isPassword = attrs.getAttributeValue(namespace, "password");
  49.                 else
  50.                         isPassword = getResources().getString(resourceId);
  51.                 if (isPassword == null)
  52.                         isPassword = "false";
  53.                
  54.                 if(labelPosition.equals("top"))
  55.                         this.setOrientation(VERTICAL);
  56.                 else
  57.                         this.setOrientation(HORIZONTAL);
  58.                
  59.                 textView = new TextView(context);
  60.                 textView.setTextSize(fontSize);
  61.                 textView.setText(labelText);
  62.                 this.addView(textView);
  63.                
  64.                 editText = new EditText(context);
  65.                 editText.setWidth(50000);
  66.                 if(isPassword.equals("true"))
  67.                         editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
  68.                 this.addView(editText);
  69.         }
  70. }
複製代碼

TOP

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="match_parent" >

  5.     <com.ray.widget.LabelEdit
  6.         android:layout_width="fill_parent"
  7.         android:layout_height="wrap_content"
  8.         android:password="true"
  9.         labelText="@string/password_lbl"
  10.         fontSize="20"
  11.         labelPosition="left"
  12.          />

  13. </LinearLayout>
複製代碼

TOP

  1. <resources>

  2.     <string name="app_name">MeSelfUI</string>
  3.     <string name="password_lbl">密碼:</string>
  4.     <string name="menu_settings">Settings</string>
  5.     <string name="title_activity_main">MainActivity</string>

  6. </resources>
複製代碼

TOP

返回列表