java - 为什么 setAlpha() 作用于我的所有按钮,而 setImageResource() 只作用于一个按钮?

标签 java android imagebutton alpha onlongclicklistener

目前我的按钮不起作用。前两次按下任何按钮时,所有按钮都会受到影响,而不仅仅是已按下的按钮。

交换:

seatButton[i].setAlpha(255);

对于:

seatButton[i].setImageResource(0x7f020007)

我的代码有效!只有我按下的按钮才会生效。为什么?

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    table = new Table(); //Creates Table
    seatButton = new ImageButton[10]; //Creates Array of buttons
    seatStats = new TextView[10]; //Creates array for stat panels


    //Creates longClickListener, used for players to sit in or out.
    longClickListener = new View.OnLongClickListener() 


    {


        @Override
        public boolean onLongClick(View v) 
        {
            for(int i=0; i<10; i++)
            {
                //Each seat[i] will correspond with each imageButtoni+1
                if(v.getId() == (getResources().getIdentifier("imageButton" + (i+1), "id", "en.deco.android.livehud"))) 
                {
                    //If the seat is empty fill it, place a player in the seat and change the button from translucent to opaque
                    if(table.seats[i].getState().equals("empty"))
                    {

                        seatButton[i].setAlpha(255);
                        //seatButton[i].setImageResource(0x7f020000);
                        table.seats[i].sit(new Player());
                        seatStats[i].setVisibility(View.VISIBLE);
                        Toast.makeText(GUI.this, table.seats[i].getState(), Toast.LENGTH_SHORT).show();
                    }
                    //If the seat is full, empty it
                    else
                    {
                        seatButton[i].setAlpha(80);
                        //seatButton[i].setImageResource(0x7f020007);
                        table.seats[i].sitOut();
                        seatStats[i].setVisibility(View.INVISIBLE);
                        Toast.makeText(GUI.this, table.seats[i].getState() + i, Toast.LENGTH_SHORT).show();
                    }
                }
            }
            return true;
        }
    };


    //Assigns the buttons and stats panels defined in the layout xml to their appropiate java arrays. Also sets clickListeners to buttons.
    for(int i = 0; i < 10; i++)
    {
        seatButton[i] = (ImageButton) findViewById(getResources().getIdentifier("imageButton" + (i+1), "id", "en.deco.android.livehud"));
        seatStats[i] = (TextView) findViewById(getResources().getIdentifier("textView" + (i+1), "id", "en.deco.android.livehud"));
        seatButton[i].setOnLongClickListener(longClickListener);
        seatButton[i].setAlpha(80);
    }

最佳答案

您正在与 == 进行字符串比较,这意味着您正在比较引用而不是值。这可能不是您想要的,因此您应该将其更改为:

if(table.seats[i].getState() == "empty") { ... }

至:

if(table.seats[i].getState().equals("empty")) { ... }

除此之外,根据setAlpha(float alpha)(API 11方法,仅供引用)的文档,传递的float应该在[0... 1]

您要设置的图像资源是 ImageManager 的 R.id.transparent_background。这可能表明您的逻辑有效,但错误确实出在设置 alpha 值的某个地方。

关于java - 为什么 setAlpha() 作用于我的所有按钮,而 setImageResource() 只作用于一个按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8022980/

相关文章:

java - 无法在 Eclipse 中创建 GWT Web 应用程序项目

使用 FrameLayout xml 的具有不同布局放置的 Android 多个按钮

android - 无法使用 Parse 推送通知解析方法

swift - 即使在创建函数后,Swift 中的 UIButton 图像也不会改变颜色

javascript - 2 个动画图像按钮,只有 1 个在工作

java - 如何使用 NetBeans 将 Macos DMG 默认图标转换为自定义图标?

java - 如何设置 JavaFX TextField 的样式使其看起来像 iOS 的一样?

java - Java 中的 Locale setDefault() 风险

android - ViewPager 中的 Fragment View 在恢复时未恢复

java - 通过单击按钮和 JSON 增加 TextView