編輯:關於Android編程
基於對上一篇博客《Android UI編程之自定義控件初步(上)——ImageButton》的學習,我們對自定義控件也有了一個初步的認識。那現在我們可以再試著對EditText進行一些自定義的學習。以下有兩種方式的自定義UI編程分享給大家。由於在上一篇博客中,有對自定義控件的一些詳細地說明,在本篇博客中,如果你還有一些沒搞懂的地方,可以參見上一篇博客《Android UI編程之自定義控件初步(上)——ImageButton》進行學習。

大家可以從上面的效果圖上看到兩個東西:左側的EditText和右側的圖片(這裡是一個Button)。我們在EditText中的輸入為空的時候,不顯示右側的清除按鈕。一旦EditText中輸入了內容的時候,右側的清除按鈕就會顯示出來。
在我們選好了骨架之後,剩下的就是穿衣服了。現在我們來看看怎麼給它穿衣服。以下是示例代碼:
功能的添加是要在Java代碼中去實現的,因為Java代碼可以動態去調節功能,而在xml代碼中卻寫不出動態調節功能的效果。Java代碼中實現各功能如下:
public void addTextChangedListener() {
mInput.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int len = mInput.getText().toString().length();
if (len > 0) {
mClear.setVisibility(View.VISIBLE);
} else {
mClear.setVisibility(View.INVISIBLE);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
private void setClearEvent() {
mClear.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mInput.setText();
}
});
}
代碼如下:
ClearEditText clearEditText = (ClearEditText) findViewById(R.id.activity_main_clear_edittext); clearEditText.setHint(輸入文本進行測試); clearEditText.addTextChangedListener();

這邊就不去長篇累牍介紹了。因為內容很單。Java實現代碼如下:
public class SmiliesEditText extends EditText {
public SmiliesEditText(Context context) {
super(context);
}
public SmiliesEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
public void insertIcon(int id) {
// SpannableString連續的字符串,長度不可變,同時可以附加一些object;可變的話使用SpannableStringBuilder,參考sdk文檔
SpannableString ss = new SpannableString(getText().toString() + [smile]);
// 得到要顯示圖片的資源
Drawable d = getResources().getDrawable(id);
// 設置高度
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
// 跨度底部應與周圍文本的基線對齊
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
// 附加圖片
ss.setSpan(span, getText().length(),
getText().length() + [smile].length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
setText(ss);
}
}
SmiliesEditText et=(SmiliesEditText)findViewById(R.id.activity_main_similies_edittext);
et.insertIcon(R.drawable.smile);
System.out.println(et.getText().toString());
Android-啟動模式task-lunchmodle-intent flag 總結
總結:同一task內的activity可以是來自不同進程的activity棧內的activity不會重新排序,只能push或者popstandard模式允許多
如何用Sencha Touch打包Android的APK
什麼是Sencha Touch前不久基於JavaScript編寫的Ajax框架ExtJS,將現有的ExtJS整合JQTouch、Rapha?l庫,推出適用於最前沿Touc
Android開發之自定義控件用法詳解
本文實例講述了Android開發之自定義控件用法。分享給大家供大家參考,具體如下:今天和大家分享下組合控件的使用。很多時候android自定義控件並不能滿足需求,如何做呢
Android編程小技巧
1、當有兩三個不同類的類且所用方法都一樣,需要完成不能的功能,而這個三個類可能都需要同另外一個類進行交互,而直接把這個類的應用到處傳遞也是很頭疼的,這時可用抽象了類來解決