2017-06-12 57 views
1

我创建了一个ButtonBarLayout,其中有5 ImageView,我想在点击和聚焦时更改图片,就像Instagram一样。ImageView在点击图片时发生变化

P.S我甚至如下使用selector.xml,但它不工作

selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_activated="true"> 
     <bitmap android:src="@drawable/ic_active"/> 
    </item> 

    <item> 
     <bitmap android:src="@drawable/ic_normal"/> 
    </item> 
</selector> 

我想要的东西like this,但不like this

和我的结论是这样的,这看起来很简单,但如果5?是否有任何其他简单的方法来创建像这样只有一个小号代码。

public void onClick(View v){ 
    switch (v.getId()){ 
     case R.id.imga: 
      ivA.setImageResource(R.drawable.ic_a_white); 
      ivB.setImageResource(R.drawable.ic_b_black); 
      ivC.setImageResource(R.drawable.ic_c_black); 
      break; 
     case R.id.imgb: 
      ivB.setImageResource(R.drawable.ic_b.white); 
      ivA.setImageResource(R.drawable.ic_a_black); 
      ivC.setImageResource(R.drawable.ic_c_black); 
      break; 
     case R.id.imgc: 
      ivC.setImageResource(R.drawable.ic_c_whtie); 
      ivA.setImageResource(R.drawable.ic_a_black); 
      ivB.setImageResource(R.drawable.ic_b_black); 
    } 
} 
+0

我会建议只是改变图像中'onClick'图像 –

+0

的@AbdulKawee我知道它是有效的,但是当我点击其他图像时,第一个图像在点击之前不会返回到正常图像。 public void onClick(View v){switch(v.getId()){case R.id.iv1; iv1.setImageResource(R.drawable.ic_active)}};喜欢这个。 – MNFS

+0

你只想在点击时改变图像,而当用户没有点击时它保持正常?就是它 ?? –

回答

0

试试这个

btn_selector.xml

<item android:drawable="@drawable/selector_image" android:state_selected="true"></item> 
<item android:drawable="@drawable/selector_image" android:state_pressed="true"></item> 
<item android:drawable="@drawable/normalImage"></item> 

</selector> 

我们您的按钮

android:background="@drawable/btn_selector" 

我不明白这是为什么不为你工作,但这是另一种方式。假设你有3个imageButtons,img1,img2,img3。现在的ImageButton的onClick做到这一点

img1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       img1.setImageResource(R.drawable.ic_a_white); 
       img2.setImageResource(R.drawable.normal); 
       img3.setImageResource(R.drawable.normal); 
      } 
     }); 

,然后在第二个按钮

img2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       img2.setImageResource(R.drawable.ic_a_white); 
       img1.setImageResource(R.drawable.normal); 
       img3.setImageResource(R.drawable.normal); 
      } 
     }); 
+0

我希望我可以让底栏像instagram,它的工作,但是当我点击其他图像时,我点击的第一个图像不会恢复到正常图像,它像你知道的Instagram,我使用ImageView不按钮 – MNFS

+0

这应该是工作因为我已经使用这个代码 –

+0

,但它没有集中,我imagin像tablayout,当点击图标片段“A”,然后页面“A”打开,图标也改变了。如果我点击图标片段“B”,那么页面“B”打开,图标变为图标片段“A”恢复正常 – MNFS

0

您设定的位图绘制的,我不知道他们能否与它或没有,但我这样做的,

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

而且这个选择适用于ImageViewbackground财产有别的将有一些空间留在边界。

+0

它的工作点击,但是当我点击其他图片时,我之前点击的图片在点击前不会变为正常图片 – MNFS

+0

您应该定义'state_selected'和'state_pressed'并且最后提供一个默认的drawable。 –

+0

是的,我已经实现了这个 – MNFS

0

试试这个代码

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
     android:drawable="@drawable/ic_active" /> 
    <item android:state_focused="true" 
     android:drawable="@drawable/ic_focus" /> 
    <item android:state_pressed="false" 
     android:drawable="@drawable/ic_focus" /> 
</selector> 
+0

其工作点击时,但当我点击其他图片时,我点击之前的图像是不会更改为正常图像之前其点击。 – MNFS

+0

我编辑了我的答案。试试吧 –

+0

不是这样,请看我上传的正确和错误的图片:),谢谢 – MNFS