ImageButton पर टेक्स्ट कैसे दिखाएं?


127

मेरे पास एक है ImageButtonऔर मैं उस पर एक पाठ और एक छवि दिखाना चाहता हूं। लेकिन जब मैं एमुलेटर पर कोशिश करता हूं:

<ImageButton 
    android:text="OK" 
    android:id="@+id/buttonok" 
    android:src="@drawable/buttonok"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" />

मुझे छवि मिलती है लेकिन पाठ के बिना। मैं पाठ कैसे दिखा सकता हूं? कृपया मेरी मदद करें!

जवाबों:


271

जैसा कि आप उपयोग नहीं कर सकते हैं android:textमैं आपको एक सामान्य बटन का उपयोग करने और यौगिक ड्राअब में से एक का उपयोग करने की सलाह देता हूं। उदाहरण के लिए:

<Button 
    android:id="@+id/buttonok" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:drawableLeft="@drawable/buttonok"
    android:text="OK"/>

आप का उपयोग करके भी आप चाहते हैं drawable रख सकते हैं: drawableTop, drawableBottom, drawableLeftया drawableRight

अपडेट करें

एक बटन के लिए यह भी बहुत अच्छा काम करता है। लगाना android:backgroundठीक है!

<Button
    android:id="@+id/fragment_left_menu_login"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/button_bg"
    android:text="@string/login_string" />

मेरे पास बस यह मुद्दा था और पूरी तरह से काम कर रहा हूं।


2
यह विकल्प सबसे अच्छा काम करता है, जब तक कि आपको किसी तरह के क्रेजी लुकिंग बटन लेआउट की आवश्यकता न हो, जैसे कि दो टेक्स्ट द्वारा सैंडविच की गई छवि। मैंने मूल रूप से widget.button के रूप में परिभाषित एक लेआउट ऑब्जेक्ट की कोशिश की, फिर उसमें एक छवि और एक टेक्स्टव्यू डाला, लेकिन उसके बाद की रूपरेखा, और ऊपर दिए गए बटन लेआउट के बाद, मैंने माप समय में लगभग 30%, लेआउट समय में 50% और 15 को बचाया मेरे फ़्रैमलेयूट पर ड्रा समय में -20%, और 38 वस्तुओं से 26 तक नीचे चला गया। यह एक बहुत अच्छी बचत है।
इवान आर।

3
@shim drawableTop बटन के शीर्ष पर ड्रॉबल को रखेगा, सबसे नीचे ड्रॉबल राइट, आदि
क्रिश्चियन

1
@ रेननबांडेरा जी, यूज़ setCompoundDrawables*()मेथड्स
क्रिस्टियन

6
मैं बटन को फिट करने के लिए छवि को कैसे स्केल कर सकता हूं? या यह स्वचालित रूप से बटन के साथ फिट करने के लिए छवि को समायोजित करेगा।
एलस्टन

3
@Stallman के रूप में एक ही सवाल, बटन के साथ छवि को कैसे फिट किया जाए, और इसे बाईं ओर सेट करें?
खूंग

63

ImageButtonयदि आप वास्तव में इसे करना चाहते हैं तो कैप्शन डालना तकनीकी रूप से संभव है। बस TextViewका ImageButtonउपयोग कर डाल दिया FrameLayout। बस Textviewक्लिक करने योग्य नहीं बनाने के लिए याद रखें ।

उदाहरण:

<FrameLayout>
    <ImageButton
        android:id="@+id/button_x"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@null"
        android:scaleType="fitXY"
        android:src="@drawable/button_graphic" >
    </ImageButton>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:clickable="false"
        android:text="TEST TEST" >
    </TextView>
</FrameLayout>

यह लॉलीपॉप पर काम नहीं करता है, हालांकि दूसरों पर पूरी तरह से काम करता है।
हांग

2
इस दृष्टिकोण के साथ समस्या यह है कि पाठ बटन राज्य (अक्षम आदि) से प्रभावित नहीं होता है ... जब तक आप मैन्युअल रूप से ऐसा नहीं करते हैं।
TheOperator

9

दोस्तों मुझे सेटिंग और लॉगआउट बटन विकसित करने की आवश्यकता है, मैंने नीचे दिए गए कोड का उपयोग किया है। यहाँ छवि विवरण दर्ज करें

    <Button
        android:id="@+id/imageViewLogout"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/size_30dp"
        android:layout_alignParentLeft="true"
        android:text="Settings"
        android:drawablePadding="10dp"
        android:background="@android:color/transparent"
        android:layout_alignParentBottom="true"
        android:drawableTop="@drawable/logout" />

4

वास्तव में, android:textएक तर्क द्वारा स्वीकार नहीं किया जाता है ImageButton , लेकिन, यदि आप एक निर्दिष्ट पृष्ठभूमि के साथ एक बटन प्राप्त करने की कोशिश कर रहे हैं (एंड्रॉइड डिफ़ॉल्ट नहीं) तो android:backgroundxml विशेषता का उपयोग करें , या इसे वर्ग से घोषित करें.setBackground();


4

आप इसका उपयोग करने के LinearLayoutबजाय इसका उपयोग कर सकते हैं जो Buttonमैं अपने ऐप में उपयोग की जाने वाली व्यवस्था है

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:background="@color/mainColor"
        android:orientation="horizontal"
        android:padding="10dp">

        <ImageView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/ic_cv"
            android:textColor="@color/offBack"
            android:textSize="20dp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="@string/cartyCv"
            android:textColor="@color/offBack"
            android:textSize="25dp" />

    </LinearLayout>

महान समाधान! onClick पूरी तरह से LinearLayout पर भी काम करता है। एक कारण न देखें कि हमें एक बटन या इमेजबटन का उपयोग क्यों करना चाहिए
सैम

2

आप इसके बजाय एक नियमित Buttonऔर Android का उपयोग कर सकते हैं : drawableTop विशेषता (या बाएं, दाएं, नीचे)।


2

सबसे अच्छा तरीका:

<Button 
android:text="OK" 
android:id="@+id/buttonok" 
android:background="@drawable/buttonok"
android:layout_width="match_parent" 
android:layout_height="wrap_content"/>

2
यह ओपी मूल रूप से क्या करने की कोशिश करने के लिए किसी भी अलग प्रतीत नहीं होता है।
PhonicUK

क्षमा करें, मुझे मेरा कोड गलत लगा। Wasn Wast ImageButton, सिर्फ बटन था।
एलॉयटेक्सो

2

मैंने ऊर्ध्वाधर अभिविन्यास के साथ ImageButtonऔर TextViewअंदर डालकर इसे हल किया LinearLayout। बहुत अच्छा काम करता है!

<LinearLayout
    android:id="@+id/linLayout"
    android:layout_width="80dp"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <ImageButton
        android:id="@+id/camera_ibtn"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:background="@drawable/camera" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/take_pic"
        android:textColor="#FFFFFF"
        android:textStyle="bold" />

</LinearLayout>

1

Heres एक अच्छा वृत्त उदाहरण:

drawable/circle.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

    <solid
        android:color="#ff87cefa"/>

    <size
        android:width="60dp"
        android:height="60dp"/>
</shape>

और फिर अपनी xml फाइल में बटन:

<Button
    android:id="@+id/btn_send"
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:background="@drawable/circle"
    android:text="OK"/>

0

ImageButtonनहीं हो सकता है text(या, कम से कम, android:textइसकी विशेषताओं में सूचीबद्ध नहीं है)।

चाल है:

ऐसा लगता है कि आपको उपयोग करने की आवश्यकता है Button(और देखो drawableTopया setCompoundDrawablesWithIntrinsicBounds(int,int,int,int))

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.