android 带文字的ImageButton

实际上,ImageButton是不能添加文字的,所以我选择将ImageView控件和TextView控件封装在一个LinearLayout里面,整个LinearLayout就是一个按钮,然后对它监听单击等动作。


首先贴上layout.xml里面的布局设计:
view sourceprint?
<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);这句一定不能少)
view sourceprint?

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; 

         } 

     }; 

}

猜你喜欢

转载自20120923lina.iteye.com/blog/1691993