Android 使ImageView可见和不可见

Android 使ImageView可见和不可见,android,Android,我的Xml文件:- 我所做的:- 我在活动中添加了一个ImageView,其中包含一个已分配给它的图像 我想要的是:- 使图像在imageview中设置为每次单击后完全不可见和可见,即第一次单击后图像变为不可见,再次单击后图像变为可见,依此类推 我得到的是:- 在第一次变为不可见后,当我单击“不可见的图像视图”时,图像永远不会变为可见,我也不会得到祝酒词。我也试着用iv1.setAlpha来做;方法,但也没有结果。在图像上设置标记。设置标记1或0,然后检查标记以更改图像的可见性 if(v.get

我的Xml文件:-

我所做的:- 我在活动中添加了一个ImageView,其中包含一个已分配给它的图像

我想要的是:- 使图像在imageview中设置为每次单击后完全不可见和可见,即第一次单击后图像变为不可见,再次单击后图像变为可见,依此类推

我得到的是:-
在第一次变为不可见后,当我单击“不可见的图像视图”时,图像永远不会变为可见,我也不会得到祝酒词。我也试着用iv1.setAlpha来做;方法,但也没有结果。

在图像上设置标记。设置标记1或0,然后检查标记以更改图像的可见性

if(v.getTag()==0)
{
    iv1.setVisibility(View.INVISIBLE);
    v.setTag() == 1;
}
else
{
    iv1.setVisibility(View.VISIBLE);
    v.setTag() == 0;
}

在图像上设置标记。设置标记1或0,然后检查标记以更改图像的可见性

if(v.getTag()==0)
{
    iv1.setVisibility(View.INVISIBLE);
    v.setTag() == 1;
}
else
{
    iv1.setVisibility(View.VISIBLE);
    v.setTag() == 0;
}

通过使用一个保持按钮状态的布尔参数(按下或不按下)使其更简单,如下所示:

static final boolean isPressed= false;
iv1 = (ImageView)findViewById(R.id.imageView1);
iv1.setOnClickListener(new View.OnClickListener() 
{

    public void onClick(View v) 
    {
        // TODO Auto-generated method stub
        Toast.makeText(getApplicationContext(), 
           "Image View 1 selected", Toast.LENGTH_SHORT).show();
        if(!isPressed){
           isPressed= true;
           iv1.setVisibility(View.INVISIBLE);
        } else {
            isPressed= false;
            iv1.setVisibility(View.VISIBLE);
        }

    }
});

通过使用一个保持按钮状态的布尔参数(按下或不按下)使其更简单,如下所示:

static final boolean isPressed= false;
iv1 = (ImageView)findViewById(R.id.imageView1);
iv1.setOnClickListener(new View.OnClickListener() 
{

    public void onClick(View v) 
    {
        // TODO Auto-generated method stub
        Toast.makeText(getApplicationContext(), 
           "Image View 1 selected", Toast.LENGTH_SHORT).show();
        if(!isPressed){
           isPressed= true;
           iv1.setVisibility(View.INVISIBLE);
        } else {
            isPressed= false;
            iv1.setVisibility(View.VISIBLE);
        }

    }
});

试试这样,用这个你就不需要任何额外的变量了

if(iv1.getVisibility()==View.INVISIBLE){
   iv1.setVisibility(View.VISIBLE);
}else{
   iv1.setVisibility(View.INVISIBLE);
}
编辑:

我尝试过使用按钮或删除背景

您正在应用单击相同的图像视图,这就是为什么不在u工作的原因。您应该在差异按钮上应用单击。如果你想在同一个图像视图上,你必须删除背景,而不是使其不可见。例如,你有几种方法可以删除bg/src,你可以使用其中之一

  iv1.setBackgroundResource(null); 
编辑-2 Ur imageview必须具有最小高度和宽度,因为移除背景后,imageview点击区域非常小

 <ImageView
    android:id="@+id/iv1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/ic_launcher"
    android:minHeight="48dp"
    android:minWidth="48dp"
    android:onClick="onClick" />
和onClick代码

  if (avail) {
            iv1.setBackgroundResource(0);
            avail = false;
        } else {
            iv1.setBackgroundResource(R.drawable.ic_launcher);
            avail = true;
        }

试试这样,用这个你就不需要任何额外的变量了

if(iv1.getVisibility()==View.INVISIBLE){
   iv1.setVisibility(View.VISIBLE);
}else{
   iv1.setVisibility(View.INVISIBLE);
}
编辑:

我尝试过使用按钮或删除背景

您正在应用单击相同的图像视图,这就是为什么不在u工作的原因。您应该在差异按钮上应用单击。如果你想在同一个图像视图上,你必须删除背景,而不是使其不可见。例如,你有几种方法可以删除bg/src,你可以使用其中之一

  iv1.setBackgroundResource(null); 
编辑-2 Ur imageview必须具有最小高度和宽度,因为移除背景后,imageview点击区域非常小

 <ImageView
    android:id="@+id/iv1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/ic_launcher"
    android:minHeight="48dp"
    android:minWidth="48dp"
    android:onClick="onClick" />
和onClick代码

  if (avail) {
            iv1.setBackgroundResource(0);
            avail = false;
        } else {
            iv1.setBackgroundResource(R.drawable.ic_launcher);
            avail = true;
        }

我建议你这样做:

在xml中,您提供了可绘制图形的实际宽度和高度,但未提供源代码:

<ImageView
     android:id="@+id/imageView1"
     android:layout_width="_some_value_"
     android:layout_height="_some_value_"
     android:layout_alignParentLeft="true"
     android:layout_alignParentTop="true"
     android:layout_marginLeft="51dp"
     android:layout_marginTop="140dp">
</ImageView>
和onClick:

public void onClick(View v) 
{
    Toast.makeText(getApplicationContext(), 
           "Image View 1 selected", Toast.LENGTH_SHORT).show();
    if(turn%2!=0)
        {iv1.setBackgroundResource(Color.TRANSPARENT);}
    else
        {iv1.setBackgroundResource(R.drawable.cross);}
    turn++;
}

我建议你这样做:

在xml中,您提供了可绘制图形的实际宽度和高度,但未提供源代码:

<ImageView
     android:id="@+id/imageView1"
     android:layout_width="_some_value_"
     android:layout_height="_some_value_"
     android:layout_alignParentLeft="true"
     android:layout_alignParentTop="true"
     android:layout_marginLeft="51dp"
     android:layout_marginTop="140dp">
</ImageView>
和onClick:

public void onClick(View v) 
{
    Toast.makeText(getApplicationContext(), 
           "Image View 1 selected", Toast.LENGTH_SHORT).show();
    if(turn%2!=0)
        {iv1.setBackgroundResource(Color.TRANSPARENT);}
    else
        {iv1.setBackgroundResource(R.drawable.cross);}
    turn++;
}

我很确定你也可以这样简单:

iv1.setVisibility(!iv1.getVisibility());
知道我的意思吗

if(iv1.getVisibility()==View.INVISIBLE){
iv1.setVisibility(View.VISIBLE);
}else{
iv1.setVisibility(View.INVISIBLE);
}

我很确定你也可以这样简单:

iv1.setVisibility(!iv1.getVisibility());
知道我的意思吗

if(iv1.getVisibility()==View.INVISIBLE){
iv1.setVisibility(View.VISIBLE);
}else{
iv1.setVisibility(View.INVISIBLE);
}


尝试使用iv1.setVisibilityView.GONE;而不是iv1.setVisibilityView.INVISIBLE;尝试了同样的结果。我想View.GONE也会删除分配给imageView的空间,我只想让图像变得不可见。请参阅更新的代码,该代码正在按您的意愿工作。请尝试使用iv1.setVisibilityView.GONE;而不是iv1.setVisibilityView.INVISIBLE;尝试了同样的结果。我想View.GONE也会删除分配给imageView的空间,我只想让图像变得不可见。请参阅更新的代码,它正在按您的意愿工作。是的,代码不错。但是我的代码有什么问题吗?除了有点棘手之外,我没有得到结果?很可能是ifcondition有什么问题,这就是为什么我建议使用更简单的方法来处理相同的状态:@mohits直到相同的结果:@Mohit,重要的是要知道,当你使imageView“不可见”时,您将无法再次与它交互,直到它再次可见:。为了确保创建按钮并使其控制imageView的相同逻辑,您将看到结果是一个漂亮的代码。但是我的代码有什么问题吗?除了有点棘手之外,我没有得到结果?很可能是ifcondition有什么问题,这就是为什么我建议使用更简单的方法来处理相同的状态:@mohits直到相同的结果:@Mohit,重要的是要知道,当你使imageView“不可见”时,您将无法再次与它交互,直到它再次可见:。确保“创建”按钮并使其控制与imageView相同的逻辑,您将看到结果这是实现我所希望的效果的最佳方法,但一旦它不可见,它就不会再次出现。只是这样做了,结果仍然相同。您尝试了什么?。。分享你的代码。您必须对src/background使用diff方法。或者使用diff?I设置iv1.setBackgroundResourcenull;在初始化imageView和onClick内部之后,我设置了iv1.setBackgroundResourcenull。因此,在开始活动时,我没有得到任何图像,当我单击imageView应该位于的位置时,也没有任何变化。现在你不需要使iv不可见/可见。这是我想要的最好方法,但一旦它不可见
它不会再出现了。只是那样做了,结果还是一样。你尝试了什么?。。分享你的代码。您必须对src/background使用diff方法。或者使用diff?I设置iv1.setBackgroundResourcenull;在初始化imageView和onClick内部之后,我设置了iv1.setBackgroundResourcenull。因此,在开始活动时,我没有得到任何图像,当我单击imageView应该位于的位置时,也没有任何变化。现在,你不需要使iv不可见/可见。