Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> android基本控件學習-----EditText,androidedittext控件

android基本控件學習-----EditText,androidedittext控件

編輯:關於android開發

android基本控件學習-----EditText,androidedittext控件


EditText的講解

一、《實例一》:用戶登錄

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ffffff"
    android:gravity="center">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:background="@drawable/txt_radiuborder"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:orientation="vertical"
        android:paddingLeft="20dp"
        android:paddingRight="20dp">
        <EditText
            android:id="@+id/edit1"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:drawableLeft="@mipmap/ic_account"
            android:drawablePadding="60px"
            android:padding="5px"
            android:singleLine="true"
            android:hint="用戶名"
            android:textColorHint="#98f5ff"
            android:textSize="30sp"/>
        <EditText
            android:id="@+id/edit2"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:drawableLeft="@mipmap/ic_password"
            android:drawablePadding="60px"
            android:padding="5px"
            android:singleLine="true"
            android:hint="密碼"
            android:textColorHint="#98f5ff"
            android:textSize="30sp"/>
    </LinearLayout>
    <Button
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="30dp"
        android:text="登錄"
        android:textSize="30sp"
        android:textColor="#000000"
        android:text
        android:background="@drawable/txt_radiuborder"/>
</LinearLayout>

屬性說明:很多屬性和TextView相同就不做過多的解釋,這裡就對這兩個屬性進行說明:

android:hint="默認提示文本" android:textColorHint="#95A1AA",第一個屬性設置提示信息,第二個屬性設置提示信息的顏色

二、常用的屬性詳解

(1)獲得焦點後選擇所有的文本內容android:selectAllOnFocus="true"

(2)限制EditText的輸入類型android:inputType="phone"

  類型描述:文本型

android:inputType="none"  
android:inputType="text"  
android:inputType="textCapCharacters"  
android:inputType="textCapWords"  
android:inputType="textCapSentences"  
android:inputType="textAutoCorrect"  
android:inputType="textAutoComplete"  
android:inputType="textMultiLine"  
android:inputType="textImeMultiLine"  
android:inputType="textNoSuggestions"  
android:inputType="textUri"  
android:inputType="textEmailAddress"  
android:inputType="textEmailSubject"  
android:inputType="textShortMessage"  
android:inputType="textLongMessage"  
android:inputType="textPersonName"  
android:inputType="textPostalAddress"  
android:inputType="textPassword"  
android:inputType="textVisiblePassword"  
android:inputType="textWebEditText"  
android:inputType="textFilter"  
android:inputType="textPhonetic"
數字型:
android:inputType="number" android:inputType="numberSigned" android:inputType="numberDecimal" android:inputType="phone"//撥號鍵盤 android:inputType="datetime" android:inputType="date"//日期鍵盤 android:inputType="time"//時間鍵盤
(3)設置最小行,最大行,單行,多行,自動換行
最小行的行數:android:minLines="3"
最大的行數:android:maxLines="3"
設置字與字的水平間隔:android:textScaleX="1.5"
設置字與字的垂直間隔:android:textScaleY="1.5"
設置英文字母大寫類型的屬性:android:capitalize 默認none,還有三個可選項
  • sentences:僅第一個字母大寫
  • words:每一個單詞首字母大小,用空格區分單詞
  • characters:每一個英文字母都大寫

(4)EditText四周的間隔距離與內部文字與邊框間的距離:和TextView一樣padding

(5)EditText的光標控制:在Java代碼中使用setSelection(int index)或者setSelection(int start,int end),其中一個參數的是設置光標位置的,兩個參數的是設置起始位置與結束位置的中間括的部分,即部分選中!

當然我們也可以調用setSelectAllOnFocus(true);讓EditText獲得焦點時選中全部文本!
另外我們還可以調用setCursorVisible(false);設置光標不顯示
還可以調用getSelectionStart()和getSelectionEnd獲得當前光標的前後位置

三、實例二:帶有表情文本輸入框

布局文件

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ffffff"
    android:gravity="center">
    <Button
        android:id="@+id/btn1"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="30dp"
        android:text="添加表情"
        android:textSize="30sp"
        android:textColor="#000000"
        android:text
        android:background="@drawable/txt_radiuborder"/>
     <EditText
         android:id="@+id/edit1"
         android:layout_width="match_parent"
         android:layout_height="100dp"
         android:padding="5px"
         android:singleLine="true"/>

</LinearLayout>

Java文件:

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ImageSpan;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends Activity {
    private EditText editText1;
    private Button btn1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText1 = (EditText) findViewById(R.id.edit1);
        btn1 = (Button) findViewById(R.id.btn1);
//        設置監聽事件
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SpannableString ss = new SpannableString("img");
                Drawable drawable = MainActivity.this.getResources().getDrawable(R.mipmap.ic_launcher);
                drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
                ImageSpan imageSpan = new ImageSpan(drawable,ImageSpan.ALIGN_BASELINE);
                ss.setSpan(imageSpan,0,3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                int cursor = editText1.getSelectionStart();
                editText1.getText().insert(cursor,ss);
            }
        });
    }
}

效果圖:

四、實例三:帶有刪除按鈕的文本輸入框(自定義輸入框)

自定義組件的Java代碼:

 

package com.example.test3;

import android.content.Context;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;

/**
 * Created by coder-tu on 2016/1/3.
 * 自定義帶有刪除按鈕的EditText
 */
public class EditTextWithDel extends EditText {
    private final static String TAG = "EditTextWithDel";
    //    定義刪除圖標
    private Drawable drawable;
    private Context mContext;

    public EditTextWithDel(Context context) {
        super(context);
        mContext = context;
        init();
    }

    public EditTextWithDel(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        init();
    }

    public EditTextWithDel(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        mContext = context;
        init();
    }

    private void init() {
        drawable = mContext.getResources().getDrawable(R.mipmap.delete);
        addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void afterTextChanged(Editable editable) {
                setDrawable();
            }
        });
        setDrawable();
    }

    /**
     * 設置刪除圖片
     */
    private void setDrawable() {
        if (length() < 1) {
            setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
        } else {
            setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
        }
    }
    /**
     * 處理刪除事件
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if(drawable != null && event.getAction() == MotionEvent.ACTION_UP){
            int eventX = (int) event.getRawX();
            int eventY = (int) event.getRawY();
            Log.e(TAG, "eventX = " + eventX + "; eventY = " + eventY);
            Rect rect = new Rect();
            getGlobalVisibleRect(rect);
            rect.left = rect.right - 100;
            if (rect.contains(eventX, eventY))
                setText("");
        }
        return super.onTouchEvent(event);
    }

    @Override
    protected void finalize() throws Throwable {
        super.finalize();
    }
}

在布局文件中使用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ffffff"
    android:gravity="center">
    <com.example.test3.EditTextWithDel
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:hint="帶有刪除按鈕的EditText"/>

</LinearLayout>

效果圖:

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved