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