8

I want to add text under a image button, which are also clickable, and will be redirected to the same activity as the image button. basically it's like the app list in any android phone, e.g.enter image description here

Xiao Han
  • 1,004
  • 7
  • 16
  • 33

4 Answers4

13

If you have your ImageButton declared in XML, then just put it into a LinearLayout which also contains a TextView and set the onClickListener on the LinearLayout. The structure would be like

<LinearLayout 
      ... > <!-- This is the LinearLayout for the xml document -->

    <!-- Some other layout code here if you please -->
    <LinearLayout 
       android:id="@+id/linLayout"
            ... >
         <ImageButton
               ... />
         <TextView
               ... />
    </LinearLayout>
</LinearLayout>

And then in your java:

LinearLayout layout = (LinearLayout)findViewById(R.id.linLayout);
layout.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }
});

If you're adding each ImageButton dynamically via java code, then it will still maintain the same structure. Let me know if I need to add anything.

Reed
  • 14,703
  • 8
  • 66
  • 110
  • I tried that, it makes textview clickable, but suddenly the imagebutton does not work after click. I have to keep the onclicklistener code for imagebutton in the .java file as well to make both imagebutton and text clickable – Xiao Han Jan 15 '12 at 09:05
  • 2
    You're doing it wrong then. If the LinearLayout containing a particular item is set to listen to the click then the image, nor the text are being listened to. ONLY the layout that contains all these views. – JoxTraex Jan 15 '12 at 14:08
  • 1
    I know this is an old post, however I had the same issue as Xiao Han above (the TextView was clickable but the ImageButton was not). I changed the ImageButton to an ImageView and it worked as expected. – mjhouseman Feb 29 '16 at 03:03
11

setAlpha and do the below

<Button
    android:id="@+id/comparePack"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="5dp"
    android:onClick="compareButtonClick"
    android:text="@string/compare" 
    android:drawableTop="@drawable/compare1edit"
    android:gravity="left|center_vertical" />
Srinath Ganesh
  • 2,496
  • 2
  • 30
  • 60
1

if you want to create this king of list use gridview and in getview method inflate customlayout with imageview and textview

0

Also you can set onClickListener to TextView

<!-- Some other layout code here if you please -->
<LinearLayout 
   android:id="@+id/linLayout"
        ... >
     <ImageButton android:id="@+id/btn1"
           ... />
     <TextView android:id="@+id/tv1"
           ... />
</LinearLayout>

java code:

ImageButton btn1 = (ImageButton) findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                myClick();

            }
        });


TextView tv1 = (TextView) findViewById(R.id.tv1);
tv1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myClick();

            }
        });
Roman Black
  • 3,501
  • 1
  • 22
  • 31