我怎么知道我按了哪个imageView?

时间:2015-08-18 15:19:14

标签: android imageview

我有三个ImageView,其中两个的“alpha”值为0.4。在此代码中,您可以更好地看到:

 <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/textlig"
                android:layout_width="80dp"
                android:layout_height="60dp"
                android:layout_gravity="bottom"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Light" />
            <ImageView
                android:id="@+id/nolig"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:alpha="1"
                android:contentDescription="No light"
                android:src="@android:drawable/ic_menu_myplaces" 
                android:onClick="clickLight"/>
            <ImageView
                android:id="@+id/freelig"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:alpha="0.4"
                android:contentDescription="Free light"
                android:src="@android:drawable/ic_menu_search"
                android:onClick="clickLight"/>
            <ImageView
                android:id="@+id/paylig"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:alpha="0.4"
                android:contentDescription="Light payment"
                android:src="@android:drawable/ic_menu_add" 
                android:onClick="clickLight"/>
   </LinearLayout>

所有都有一个执行clickLight()metod的onClick值:

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void clickLight(View view){

    ImageView nol = (ImageView)findViewById(R.id.nolig);
    ImageView frel = (ImageView)findViewById(R.id.freelig);
    ImageView pal = (ImageView)findViewById(R.id.paylig);

    nol.setAlpha((float) 0.3);
    frel.setAlpha((float) 0.3);
    pal.setAlpha((float) 0.3);


}

这段代码不完整,因为我需要我按下的imageView的id,将valor 1放入他的alpha中。

我在这个论坛上搜索,但我一无所获。有人知道这个或某种方式吗?

非常感谢你!

5 个答案:

答案 0 :(得分:0)

您可以使用视图ID询问按下的视图。

@覆盖 public void onClick(查看视图){   如果(view.getId()== R.id.but_id) }

记得将监听器设置为按钮 http://developer.android.com/reference/android/view/View.OnClickListener.html

答案 1 :(得分:0)

试试这个:

public void clickLight(View view){

        ImageView nol = (ImageView)findViewById(R.id.nolig);
        ImageView frel = (ImageView)findViewById(R.id.freelig);
        ImageView pal = (ImageView)findViewById(R.id.paylig);
        switch (view.getId()) {
            case R.id.nolig:
                nol.setAlpha((float) 0.3);
                break;
            case R.id.freelig:
                frel.setAlpha((float) 0.3);
                break;
            case R.id.paylig:
                pal.setAlpha((float) 0.3);
                break;
        }

    }

答案 2 :(得分:0)

你可以这样做:

var c=$(".boxes div");
 setInterval(function(){
 $.each(c,function(a,z){
    $("div[class='"+(z.className)+"'").hide();
 });
 var item = c[Math.floor(Math.random()*c.length)];
 var u=item.className;
 $("."+u).fadeOut();
 $("div[class='"+u+"'").show().fadeIn(1000);

 }, 2000);

答案 3 :(得分:0)

该方法接收单击的ImageView作为参数:

public void clickLight(View view){
    ImageView clickedImage = (ImageView)findViewById(view.id);
    clickedImage.setAlpha(1.0f);
    // set the other ImageViews
    // ...

答案 4 :(得分:0)

您可以通过多种方式对此进行编码。这里有几个。

选项1使用View's ID

public void clickLight(View view){

    ImageView nol = (ImageView)findViewById(R.id.nolig);
    ImageView frel = (ImageView)findViewById(R.id.freelig);
    ImageView pal = (ImageView)findViewById(R.id.paylig);
    //You can also use an switch block
    if(view == nol) {
        nol.setAlpha((float) 0.3);
    }else if(view == frel) {
        frel.setAlpha((float) 0.3);
    }else if(view == pal) {
        pal.setAlpha((float) 0.3);
    }

}

选项2使用View's ID的替代方式:

public void clickLight(View view){

    switch (view.getId()){
        case R.id.nolig:
            //do something
            ((ImageView)findViewById(R.id.nolig)).setAlpha((float) 0.3);
            break;

        case R.id.freelig:
            //do something
            ((ImageView)findViewById(R.id.freelig)).setAlpha((float) 0.3);
            break;

        case R.id.paylig:
            //do something
            ((ImageView)findViewById(R.id.paylig)).setAlpha((float) 0.3);
            break;

    }
}

选项3使用TAG

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/textlig"
        android:layout_width="80dp"
        android:layout_height="60dp"
        android:layout_gravity="bottom"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Light" />
    <ImageView
        android:id="@+id/nolig"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:alpha="1"
        android:contentDescription="No light"
        android:src="@android:drawable/ic_menu_myplaces"
        android:onClick="clickLight"
        android:tag="nolig"/>
    <ImageView
        android:id="@+id/freelig"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:alpha="0.4"
        android:contentDescription="Free light"
        android:src="@android:drawable/ic_menu_search"
        android:onClick="clickLight"
        android:tag="nolig"/>
    <ImageView
        android:id="@+id/paylig"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:alpha="0.4"
        android:contentDescription="Light payment"
        android:src="@android:drawable/ic_menu_add"
        android:onClick="clickLight"
        android:tag="nolig"/>
</LinearLayout>

public void clickLight(查看视图){

switch (view.getTag().toString()){
    case "nolig":
        //do something
        ((ImageView)findViewById(R.id.nolig)).setAlpha((float) 0.3);
        break;

    case "freelig":
        //do something
        ((ImageView)findViewById(R.id.freelig)).setAlpha((float) 0.3);
        break;

    case "paylig":
        //do something
        ((ImageView)findViewById(R.id.paylig)).setAlpha((float) 0.3);
        break;

}

}

老实说,虽然我会建议使用像ButterKnife这样的图书馆。这只是我个人的偏好。 Butterknife