单击时更改按钮的图像背景,再次单击时将其置于原始状态

时间:2016-03-05 17:13:36

标签: android button

我班上有一系列按钮,如下所示:

<html>
<head>

<style>
 .holder{
     background-color:yellow;
     margin-top:10px;
     width: 300px;
}

.holder span{
   background-color: Green;  
   height:20px;
   color:white;
  }

 </style>



<script>

var contacts =[];

function getInfo() {
    var firstName = prompt("Enter first name");
    var lastName = prompt("Enter last name");
    var emailId = prompt("Enter Email ID");
    var phoneNo = prompt("Enter Phone number");

    var person ={
        fname : firstName,
        lname : lastName,
        email : emailId,
        phone : phoneNo
    };
    contacts.push(person);  

    var currPerson = contacts[contacts.length-1]; //take the last pushed object from the array

    var lastNameFirstChar = currPerson.lname.charAt(0).toUpperCase();

    if(!document.getElementById(lastNameFirstChar + "_holder")){      
    document.getElementById("mydiv").innerHTML += "<div  id='"+lastNameFirstChar+"_holder' class='holder'><span>"+lastNameFirstChar+"</span></br></div>";

  }
   //document.getElementById(lastNameFirstChar + "_holder").innerHTML += currPerson.fname+" "+currPerson.lname + "<br/>";


   document.getElementById(lastNameFirstChar + "_holder").innerHTML += "<span onclick='showMe(" + currPerson.id + ")'>" + currPerson.fname + " " + currPerson.lname + "</span><br/>";


}


function showMe(id) {
    alert(id);
   var person = contacts[id];  /* currently corresponds to array index, could be a property lookup with underscore or whatever */
   var contactInfo = person.fname+" "+person.lname+"</br> "+person.email+"</br>"+person.phone;

   target.innerHTML = "<div>" + contactInfo + "</div></br>";

}





</script>

</head>

<body>
<button onclick="getInfo()">Get Person Info</button>
<p>----------------------------</p>
<div id="mydiv">

</div>
</body>
</html>

并在我的xml中添加了图像背景,如下所示:

private static final int[] idArray = {R.id.bt0,R.id.bt1,R.id.bt2,R.id.bt3,R.id.bt4,R.id.bt5,R.id.bt6,R.id.bt7,R.id.bt8,R.id.bt9,R.id.bt10,R.id.bt11,R.id.bt12,R.id.bt13,R.id.bt14,R.id.bt15,R.id.bt16,R.id.bt17,R.id.bt18,R.id.bt19,R.id.bt20,R.id.bt21,R.id.bt22,R.id.bt23,R.id.bt24,R.id.bt25,R.id.bt26,R.id.bt27,R.id.bt28,R.id.bt29};
private Button[] bt = new Button[idArray.length];

现在,当我按下按钮时,背景图像会被更改(btnew1.gif),并在释放时恢复正常。 我希望在单击一个按钮时更改颜色(它将是一个不同的图像,btnew2.gif),再次单击时应返回原始颜色(btnew.gif)。

类似于<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/btnew2" android:state_selected="true"></item> <item android:drawable="@drawable/btnew1" android:state_pressed="true"></item> <item android:drawable="@drawable/btnew"></item> </selector> 的东西,如果有类似的东西。

PS:我在这里检查了其他答案,但大多数只是java类中的换色器,当我点击时,我正在寻找要改变的背景图像(到btnew2.gif) 再次点击时返回原始图片(btnew.gif)。

请提出合适的解决方案。

2 个答案:

答案 0 :(得分:0)

您可以通过制作自己的自定义按钮来完成此操作。

Class MyButton extends Button implememts OnClickListener{

Public MyButton(....){
......
this.setOnClickListener(this);
}


@override
Public void onClick(....){
....toogle bg for this button.....

}

}

这不是确切的代码....但是如何做到这一点的抽象概念。

答案 1 :(得分:0)

正如Niels Masdorp所说,你可以用{{var order.getGrandTotal()}} 来做。

这是有效的,因为有一个名为ToggleButton的状态标识符,类似于state_checkable,它与state_clickable接口一起使用。 Checkable实现了这个接口。您还可以创建自己的实现此界面的小部件,例如扩展ToggleButton(摘要)。

示例

使用xml中的按钮:

CompoundButton

在xml中定义背景:

<ToggleButton
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/toggle_bg"
    android:textOn="On"
    android:textOff="Off"/>

另见:

  • <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/red" android:state_checked="true"/> <item android:drawable="@color/blue"/> </selector> docs
  • 自定义可检查小部件上的tutorial