如何制作一个背景图像和文字的按钮,同时背景图片的透明区域不可点击?
据我所知,
使用ImageButton:有背景图片(是),透明区域不可点击(是),文字(没有)
使用Button:有背景图片(是),透明区域不可点击(不确定),文字(是)
我怎么能有3'是'一个按钮?
答案 0 :(得分:0)
你可以尝试一下 在框架布局中添加图像按钮,然后在其上方的textview,这应该可以解决您的问题
答案 1 :(得分:0)
看一件事就是使用自定义布局。将framelayout作为背景,添加居中的textview并使textview可单击并附加一个监听器以处理其click事件
答案 2 :(得分:0)
好的我明白了:使用OnTouchListener()并像ImageButton一样捕捉透明像素,并像往常一样设置文本。
Button btn = (Button) findViewById(R.id.btn6);
btn.setBackground(getResources().getDrawable(R.drawable.ic_launcher));
// use setOnTouchListener to make transparent area not clickable
btn.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// get bitmap
Bitmap bmp = null;
v.setDrawingCacheEnabled(true);
v.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); //Quality of the snapshot(bmp)
try {
v.buildDrawingCache(); // UPDATE HERE
bmp = Bitmap.createBitmap(v.getDrawingCache());
} finally {
v.setDrawingCacheEnabled(false);
}
// get color of bitmap
int color = 0;
try {
color = bmp.getPixel((int) event.getX(), (int) event.getY());
} catch (Exception e) {
e.printStackTrace();
}
if (color == Color.TRANSPARENT)
return false;
else {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_OUTSIDE:
break;
case MotionEvent.ACTION_CANCEL:
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_SCROLL:
break;
case MotionEvent.ACTION_UP:
Toast.makeText(getApplicationContext(), "ACTION UP", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return true;
}
}
});
答案 3 :(得分:0)
尝试这样的事情,
<RelativeLayout
android:id="@+id/saveDeleteBar"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:background="@color/purple">
<TextView
android:id="@+id/txt1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/imgbtnDrVisitSave"
android:ellipsize="end"
android:gravity="left|center_vertical"
android:paddingLeft="5dp"
android:singleLine="true"
android:text=""
android:textColor="@color/white"
android:textSize="18dp"
android:textStyle="normal" />
<ImageButton
android:id="@+id/imgbtnDrVisitSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:adjustViewBounds="true"
android:background="@null" //HERE YOU CAN ADD IMAGE
android:padding="5dp"
android:scaleType="fitCenter"
android:src="@drawable/yes_dark" />
</RelativeLayout>
答案 4 :(得分:0)
我认为@amit vaghela所说的最佳实践是考虑RelativeLayout或LinearLayout,其中包含图像和文本,并使每个部分都可以随意点击或不可用。