Android带文字的ImageButton实现

实际上,ImageButton是不能添加文字的,所以我选择将ImageView控件和TextView控件封装在一个LinearLayout里面,整个LinearLayout就是一个按钮,然后对它监听单击等动作。
首先贴上layout.xml里面的布局设计:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
< LinearLayout
         android:layout_width = "wrap_content"
         android:layout_height = "wrap_content"
         android:orientation = "vertical"
         android:id = "@+id/bt" >
         < ImageView
             android:id = "@+id/ib"
             android:layout_width = "wrap_content"
             android:layout_height = "wrap_content"
             android:src = "@drawable/ringlove"
             android:background = "#00000000"
         />
         < TextView
             android:id = "@+id/tv"
             android:layout_width = "wrap_content"
             android:layout_height = "wrap_content"
             android:text = "@string/cs"
             android:paddingLeft = "20px"
         />
</ LinearLayout >
然后是java代码实现:(注意, m_ll.setClickable(true);这句一定不能少
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.droidX.wcs233;
  
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.LinearLayout;
import android.widget.Toast;
  
public class testActivity extends Activity {
     LinearLayout m_ll;
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.main);
         m_ll=(LinearLayout)findViewById(R.id.bt);
         m_ll.setClickable( true );
         m_ll.setOnClickListener(ocl);
         m_ll.setOnTouchListener(otl);
     }
      
     public OnClickListener ocl= new OnClickListener() {
          
         @Override
         public void onClick(View v) {
             // TODO Auto-generated method stub
             Toast.makeText(getApplicationContext(), "yes" , Toast.LENGTH_SHORT).show();
         }
     };
      
     public OnTouchListener otl= new OnTouchListener() {
          
         @Override
         public boolean onTouch(View v, MotionEvent event) {
             // TODO Auto-generated method stub
             if (event.getAction()==MotionEvent.ACTION_DOWN)
             {
                 m_ll.setBackgroundColor(Color.rgb( 127 , 127 , 127 ));
             }
             else if (event.getAction()==MotionEvent.ACTION_UP)
             {
                 m_ll.setBackgroundColor(Color.TRANSPARENT);
             }
             return false ;
         }
     };
}
这样就可以了。
另外,为了使“按钮”美观,大家在选择图片的时候,尽量选择长宽不一样的,适合需要的比例,这样配着文字,刚好可以使“按钮”呈正方形。

你可能感兴趣的:(imagebutton)