2011-11-28 15 views
7

मुझे लगता है ऐसा करने जा करने के लिए एक अजीब बात की तरह है, लेकिन मैं एक बटन है कि करने की जरूरत है एक EditText तरह लग रही है लेकिन अभी भी तरह व्यवहार करते हैं एक बटन। मेरे लेआउट एक्सएमएल वर्तमान में इस तरह दिखता है:शैली एक बटन एक EditText तरह देखने के लिए (लेकिन अभी भी एक बटन की तरह व्यवहार)

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    style="?android:attr/editTextStyle" /> 

कि यह (निकाले जाने के लिए जब तक बटन ध्यान दिया है से onClick ईवेंट को रोकने प्रभावी रूप से यह बनाकर एक EditText की उपस्थिति देता है, लेकिन यह भी व्यवहार में गड़बड़ी न एक छोटा सा दो क्लिक की आवश्यकता है)। बटन के व्यवहार को बदलने के बिना शैली को रखने का कोई तरीका है?

मैंने 9-पैच पृष्ठभूमि बनाने के बारे में सोचा जो कि एडिटटेक्स्ट की तरह दिखता है, लेकिन वहां कई अलग-अलग एंड्रॉइड संस्करणों और स्किन्स के साथ मैं सिस्टम शैली का उपयोग कर सकता हूं, यदि यह संभव हो।

उत्तर

28

एक संपादन टेक्स्ट जो बटन की तरह व्यवहार करता है?

<EditText android:id="@+id/Edit" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:clickable="true"/> 

आप इसके लिए ऑनक्लिक लिस्टनर भी परिभाषित कर सकते हैं। और यह फोकस नहीं होगा।

+1

अगर मैं यह था तो मैं इसके लिए जाऊंगा। – dmon

+1

धन्यवाद, वही ज़रूरत थी ... जो मैं "बॉक्स के बाहर" कहता हूं। – Shahar

1

यदि इसे बिल्कुल एक बटन होने की आवश्यकता है, तो आप बटन पर फोकस श्रोता जोड़ सकते हैं जो बटन को फोकस प्राप्त करते समय ऑनक्लिक को निकाल देता है।

weirdoButton.setOnFocusChangeListener(new OnFocusChangeListener() { 

    @Override 
    public void onFocusChange(View view, boolean hasFocus) { 
    if(hasFocus) { 
     weirdoButton.performClick(); 
    } 
    } 
}); 

नकारात्मकता यह है कि जब बटन को ट्रैकबॉल या डी-पैड के माध्यम से फोकस प्राप्त होता है तो क्लिक तब आग लग जाएगा। यह लेआउट फ़ाइल में संयुक्त राष्ट्र फोकस करने योग्य बनाओ:

<Button 
    android:id="@+id/weirdoButton" 
    android:layout_width="match_parent" 
    android:layout_height="50dip" 
    android:focusable="false" 
    style="?android:attr/editTextStyle" /> 
0

स्वीकार किए जाते हैं जवाब एक बटन के रूप में करते हैं कि आप शैली EditText, लेकिन मैं इसे में विरोधाभास पाया; जब आप इसे लंबे समय तक दबाते हैं, तो यह आपको टेक्स्ट को पेस्ट करने देता है जो यूएक्स के मामले में भयानक है।

यही वह है जिसे मैंने इसे संपादित करने के बजाय इसे संपादित करने के लिए लागू किया है।

<Button 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:textSize="16sp" 
    android:focusable="false" 
    android:id="@+id/btnAddMember" 
    style="?android:attr/editTextStyle" 
    android:focusableInTouchMode="false" 
    android:clickable="true" 
    android:hint="Button Content"/> 
संबंधित मुद्दे