搜尋此網誌

2013-11-22

當View沒有對映的method可以設定屬性時...



想在程式裡建立一個EditText, 並設定cursorDrawable, 但我們new EditText所取得的instance裡並沒有對應可以set CursorDrawablemethod, 而只在xml可以設定android:textCursorDrawable屬性, 這時我們就可以用這種解決方法.

AttributeSet editTextAttributeSet = null;
int res = context.getResources().getIdentifier("cust_edittext", "layout", context.getPackageName());
XmlPullParser parser = context.getResources().getXml(res);
int state=0;
do {
    state = parser.next();
    if (state == XmlPullParser.START_TAG) {
        if (parser.getName().equals("EditText")) {
            editTextAttributeSet = Xml.asAttributeSet(parser);
            break;
        }
    }
} while(state != XmlPullParser.END_DOCUMENT);


然後要使用時只要代入AttributeSet就可以了
EditText edittext = new EditText(context, editTextAttributeSet);

上面紅字部分有個cust_edittext其實就是一個EditTextxml, 例如在layout/cust_edittext.xml
這樣我們就可以設定CursorDrawable
<?xml version="1.0" encoding="utf-8"?>
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textCursorDrawable="@null"
        android:textColor="#ff000000">       
</EditText>

沒有留言 :

張貼留言