实际上,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​​​​; ​


​} ​


​}; ​


​}​



这样就可以了。


另外,为了使“按钮”美观,大家在选择图片的时候,尽量选择长宽不一样的,适合需要的比例,这样配着文字,刚好可以使“按钮”呈正方形。