android透明ImageButton在MvvmCross中无法点击

时间:2013-11-19 13:13:07

标签: android transparency imagebutton mvvmcross

如何创建一个仍然可点击的透明背景的ImageButton(仍然像Button一样)?

这是xml片段:

 <ImageButton
            android:paddingRight="10dp"
            android:paddingLeft="10dp"
            android:paddingTop="7dp"
            android:paddingBottom="7dp"
            android:src="@drawable/serverschedule"
            android:background="@null"
            android:clickable="true"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/predict"
            local:MvxBind="Click PredictCmd" />

我还尝试了android:background="#00000000"android:background="@android:color/transparent",在所有情况下,我都获得了所需的视觉效果,但不再可以点击按钮。

我使用MvvmCross框架绑定到按钮的Click事件,因此没有代码。

我正在测试API等级15,如果这很重要。

编辑为按钮添加了整个axml。 编辑添加MVVM框架,因为它可能与问题有关。

TIA。

7 个答案:

答案 0 :(得分:2)

感谢所有建议。

这最终对我有用:

android:background="?android:attr/selectableItemBackground"

基于this主题的回复。

答案 1 :(得分:0)

请提供按钮的宽度和高度。

也试试这个:

ImageButton theButton = (ImageButton )findViewById(R.id.theButton);
theButton.setVisibility(View.VISIBLE);
theButton.setBackgroundColor(Color.TRANSPARENT);

theButton.setOnClickListener(new OnClickListener()
{   
 @Override
 public void onClick(View v)
 {
    // DO STUFF
 }
 });

希望这有帮助。

答案 2 :(得分:0)

做某些必要的改变

<ImageButton
                android:paddingRight="10dp"
                android:paddingLeft="10dp"
                android:paddingTop="7dp"
                android:paddingBottom="7dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/serverschedule"
                android:background="@null"
                android:id="@+id/mybutton"
</ImageButton

进入你的代码:

mybutton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                //Your Stuff here
            }
    });

答案 3 :(得分:0)

试试这个......

<ImageButton
    android:id="@+id/imageButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/timeText"
    android:layout_centerHorizontal="true"
    android:background="@android:color/transparent"
    android:clickable="true"
    android:contentDescription="image button"
    android:src="@drawable/anchor" />

将clickable属性设置为true,并处理活动中的onclick事件,如

    findViewById(R.id.imageButton).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "text", Toast.LENGTH_SHORT).show();
        }
    });

答案 4 :(得分:0)

您的xml文件没有变化..甚至无需添加此android:clickable="true"

编辑您的java文件,如下面的代码......

ImageButton imageButton;

    @Override
    public void onCreate(Bundle savedInstanceState) {

imageButton = (ImageButton) findViewById(R.id.imageButton1);

        imageButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

               Toast.makeText(MyAndroidAppActivity.this,
                "ImageButton is clicked!", Toast.LENGTH_SHORT).show();

            }

        });

    }
 }

如果这不起作用,您的父布局可能会出现问题。如果是的话请发帖....

答案 5 :(得分:0)

“充当按钮”的含义是什么?当你使用

android:background="@null" 

你的ImageButton没有背景,你可以使用选择器作为src,你会得到与按钮相同的行为,也可以像往常一样点击 像这样的选择

<?xml version="1.0" encoding="utf-8"?>      
<selector xmlns:android="http://schemas.android.com/apk/res/android">   
   <item android:drawable="@drawable/button_bg_pressed" android:state_pressed="true"/>  
   <item android:drawable="@drawable/button_bg_pressed" android:state_focused="true"/>  
   <item android:drawable="@drawable/button_bg_normal"/>  
</selector>

另见enter link description here

答案 6 :(得分:0)

back.setBackgroundColor(Color.TRANSPARENT);

适用于所有Android版本