关于自定义linearlayout点击不能触发事件问题的解决
(2017-05-26 06:21:20)
1.自定义linearlayout如下:
package com.balanceapp;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
public class ImageButton_define extends LinearLayout {
private
ImageButton imagebutton;
private
TextView textView;
public
ImageButton_define(Context context,AttributeSet attrs) {
super(context,attrs);
// TODO
Auto-generated constructor
stub
imagebutton
= new ImageButton(context,
attrs);
imagebutton.setPadding(0, 0, 0,
0);
imagebutton.setScaleType(ImageButton.ScaleType.FIT_CENTER);
imagebutton.setLayoutParams(new
LayoutParams(LayoutParams.MATCH_PARENT, 0, 7));
//关闭imagebutton点击事件,返回点击事件到 ImageButton_define处理
imagebutton.setClickable(false);
textView
=new TextView(context, attrs);
//水平居中
textView.setGravity(android.view.Gravity.CENTER);
textView.setPadding(0, 0, 0, 0);
textView.setLayoutParams(new
LayoutParams(LayoutParams.MATCH_PARENT,0, 3));
textView.setClickable(false);
setFocusableInTouchMode(true);
//触摸获取焦点
setClickable(true);
setFocusable(true);
//键盘按键获取焦点
setOnTouchListener(null);
setOnClickListener(null);
setBackgroundColor(0x00000000);
//setBackgroundResource(android.R.drawable.btn_default);
setOrientation(LinearLayout.VERTICAL);
addView(imagebutton);
addView(textView);
}
}
注意:红色字体部分,需要在自定义时,关闭内部控件点击响应。
2.布局引用
android:id="@+id/imageButton_open_bluetooth"
android:layout_width="100dp"
package com.balanceapp;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
public class ImageButton_define extends LinearLayout {
}
注意:红色字体部分,需要在自定义时,关闭内部控件点击响应。
2.布局引用