【问题标题】:Help with Image Buttons in Eclipse帮助 Eclipse 中的图像按钮
【发布时间】:2011-08-04 15:27:34
【问题描述】:

嘿,我想知道你是怎么做到的,这样当一个图像按钮被按下时,它会改变颜色以显示它被按下了。

DragonFruitActivity.java

package com.Dragon_Fruit;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;
public class DragonFruitActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ImageButton playbutton = (ImageButton) findViewById(R.id.playbutton); playbutton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                setBackgroundResource(R.drawable.playbuttonselected);
                // TODO Auto-generated method stub
                startActivity(new Intent(DragonFruitActivity.this, playbutton.class));
            }

            private void setBackgroundResource(int playbuttonselected) {
                // TODO Auto-generated method stub

            }


});
        ImageButton settingsbutton = (ImageButton) findViewById(R.id.settingsbutton); settingsbutton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                startActivity(new Intent(DragonFruitActivity.this, settingsbutton.class));
            }


});
    }
}

所以新的Activity应该是:

package com.Dragon_Fruit;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;
public class DragonFruitActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ImageButton playbutton = (ImageButton) findViewById(R.id.playbutton); playbutton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                arg0.setBackgroundResource(R.drawable.playbuttonselected);
                // TODO Auto-generated method stub
                startActivity(new Intent(DragonFruitActivity.this, playbutton.class));
            }


});
        ImageButton settingsbutton = (ImageButton) findViewById(R.id.settingsbutton); settingsbutton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                startActivity(new Intent(DragonFruitActivity.this, settingsbutton.class));
            }


});
    }
}

【问题讨论】:

  • 您不需要自己的setBackgroundResource(...) 方法,View 类内置了一个:developer.android.com/reference/android/view/…
  • 啊,我知道问题出在哪里了。这是我的错误:删除额外的方法 setBackgroundResource,并在 onClick 方法中调用此方法之前添加arg0.:arg0.setBackgroundResource(R.drawable.playbuttonselected);
  • 我添加了新活动应该是什么。它看起来正确吗?

标签: android eclipse


【解决方案1】:

请使用StateListDrawable。

【讨论】:

  • 对不起,我还是很困惑。我必须为选择器创建一个新的 XML 布局吗?
  • 在视图上,设置选择器为android:background的值
  • 等等,我要使用已有的 XML 布局吗?对不起,如果这些是愚蠢的问题,但我知道这一点。你所说的视图是什么意思...
  • <ImageButton android:id="@+id/id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/image" android:background="@drawable/your_selector"></ImageButton>
  • 所以我所做的就是把它放在我的按钮所在的xml中
【解决方案2】:

在你的onClick(...)方法中,你可以setBackgroundResource(...)

ImageButton playbutton = (ImageButton) findViewById(R.id.playbutton); 
playbutton.setOnClickListener(new View.OnClickListener() { 
    @Override public void onClick(View arg0) {
        setBackgroundResource(...);
        startActivity(new Intent(DragonFruitActivity.this, playbutton.class));
    }
}

(您还需要定义可绘制对象以用作背景颜色)。

【讨论】:

  • 所以这是活动中按钮的代码: ImageButton playbutton = (ImageButton) findViewById(R.id.playbutton); playbutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO 自动生成的方法存根 startActivity(new Intent(DragonFruitActivity.this, playbutton.class));
  • 那么 setBackgroundResource 会去哪里?
  • 在调用startActivity(...) 方法之前。
  • ImageButton 播放按钮 = (ImageButton) findViewById(R.id.playbutton); playbutton.setOnClickListener(new View.OnClickListener() { public void setBackgroundResource (int redid) { } @Override public void onClick(View arg0) { // TODO 自动生成的方法存根 startActivity(new Intent(DragonFruitActivity.this, playbutton.class ));
  • 就这样吗?但是推送时如何使用背景资源改变颜色
【解决方案3】:

你可以看看this。您可以下载该示例并将android:drawable 替换为您的图像。

【讨论】:

    【解决方案4】:

    你要找的是选择器http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

    使用它们来更改图像按钮的颜色。

    【讨论】:

      猜你喜欢
      • 2011-03-29
      • 2011-08-24
      • 1970-01-01
      • 2011-08-10
      • 2015-08-11
      • 2010-11-27
      • 2011-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多