मेरे ऐप में इस तरह के कुछ बटन हैं:
<Button
android:id="@+id/bSearch"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="Search"
android:textSize="24sp" />
मैं टेक्स्ट और आइकन के साथ एक ही बटन बनाने की कोशिश कर रहा हूं। android: drawableLeft मेरे लिए काम नहीं करता है (शायद यह होगा, लेकिन मुझे नहीं पता कि आइकन को अधिकतम ऊंचाई कैसे सेट करें)।
इसलिए मैंने एक ImageView और एक TextView के साथ एक LinearLayout बनाया और इसे एक बटन की तरह काम किया:
<LinearLayout
android:id="@+id/bSearch2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/btn_default"
android:clickable="true"
android:padding="16dp"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:adjustViewBounds="true"
android:maxHeight="30dp"
android:maxWidth="30dp"
android:scaleType="fitCenter"
android:src="@drawable/search_icon" />
<TextView
android:id="@+id/tvSearchCaption"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textSize="24sp"
android:paddingRight="30dp"
android:gravity="center"
android:text="Search" />
</LinearLayout>
मेरा नया बटन वही है जो मैं चाहता हूं (फ़ॉन्ट आकार, आइकन और पाठ प्लेसमेंट)। लेकिन यह मेरे डिफ़ॉल्ट बटन की तरह नहीं दिखता है:
इसलिए मैंने अपने नए बटन की पृष्ठभूमि और पाठ का रंग बदलने की कोशिश की:
Button Search = (Button) findViewById(R.id.bSearch);
LinearLayout bSearch2 = (LinearLayout) findViewById(R.id.bSearch2);
bSearch2.setBackground(bSearch.getBackground());
TextView tvSearchCaption = (TextView)findViewById(R.id.tvSearchCaption);
tvSearchCaption.setTextColor(bSearch.getTextColors().getDefaultColor());
यह एक अजीब परिणाम देता है, मेरा पुराना बटन गड़बड़ हो जाता है:
जब मैं XML में इन दो बटन के क्रम को बदलता हूं, तो "नया बटन" पहले जाता है, यह एक और अजीब परिणाम देता है:
अब मैंने देखा, कि जब मैं पुराने बटन को दबाने की कोशिश करता हूं, तो नया दबाया जाता है।
कोई विचार?