Как изменить цвет кнопки в Android при нажатии?

Я работаю над Android-приложением. Я хочу, чтобы 4 кнопки располагались горизонтально в нижней части экрана. На этих 4 кнопках две кнопки имеют на них изображения. Граница кнопок должна быть черного цвета, а граница должна быть как можно более тонкой. Когда я нажимаю кнопку, я хочу, чтобы фон кнопки был изменен на синий цвет без изменения цвета границы, который должен быть оставлен в этом цвете в течение некоторого времени. Как я могу достичь этого сценария в Android?

Один из подходов заключается в создании XML-файла, подобного этому в drawable , который называется what.xml:

       

bgalt и bgnorm – это изображения PNG, bgalt bgnorm .

Если вы создаете кнопки программно в своей деятельности, вы можете установить фон с помощью:

 final Button b = new Button (MyClass.this); b.setBackgroundDrawable(getResources().getDrawable(R.drawable.whatever)); 

Если вы настроили стиль кнопок с помощью XML, вы бы сделали что-то вроде:

  

И, наконец, ссылка на учебник . Надеюсь это поможет.

Сохраните этот код в папке с возможностью «bg_button.xml» и назовите «@ drawable / bg_button» в качестве фона кнопки в вашем xml:

                    1                    1                    

Попробуй это

  final Button button = (Button) findViewById(R.id.button_id); button.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP) { button.setBackgroundColor(Color.RED); } else if(event.getAction() == MotionEvent.ACTION_DOWN) { button.setBackgroundColor(Color.BLUE); } return false; } }); 

См. Это,

 boolean check = false; Button backward_img; Button backward_img1; backward_img = (Button) findViewById(R.id.bars_footer_backward); backward_img1 = (Button) findViewById(R.id.bars_footer_backward1); backward_img.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { check = true; backward_img.setBackgroundColor(Color.BLUE); } }); if (check == true) { backward_img1.setBackgroundColor(Color.RED); backward_img.setBackgroundColor(Color.BLUE); } 

Если вы хотите изменить обратное изображение или цвет кнопки при нажатии, просто скопируйте этот код и вставьте его в точное место, описанное ниже.

            
                       

Попробуй это……

Сначала создайте xml-файл с именем button_pressed.xml. Это его содержимое.

        

Noe попробуйте это на вашей кнопке.

 int imgID = getResources().getIdentifier("button_pressed", "drawable", getApplication().getPackageName()); button.setImageResource(imgID); 

button_pressed.xml должен находиться в папке с возможностью переноса. icon_1_press и icon_1 – два изображения для нажатия кнопки и нормальной фокусировки.

Я использую этот код (с эффектом пульсации):

     

вы можете попробовать этот код, чтобы решить вашу проблему

          

напишите этот код в своем drawable, создайте новый ресурс и назовите его, что хотите, а затем напишите имя этого drwable в кнопке так же, как мы ссылаемся на изображение src в android

Чтобы правильно решить, как долго вы хотите, чтобы ваша кнопка оставалась в другом цвете, я бы посоветовал эту версию:

 button.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch(event.getAction()) { case MotionEvent.ACTION_DOWN: button.setBackground(getResources().getDrawable(R.drawable.on_click_drawable)); break; case MotionEvent.ACTION_UP: new java.util.Timer().schedule( new java.util.TimerTask() { @Override public void run() { ((Activity) (getContext())).runOnUiThread(new Runnable() { @Override public void run() { button.setBackground(getResources().getDrawable(R.drawable.not_clicked_drawable)); } }); } }, BUTTON_CLICK_TIME_AFTER_RELEASE_ANIMATION); break; default: } return false; } }); 

BUTTON_CLICK_TIME_AFTER_RELEASE_ANIMATION указывает после того, сколько времени [ms] кнопка будет сброшена в предыдущее состояние (однако вы можете использовать некоторое логическое значение, чтобы проверить, что кнопка не использовалась между ними, в зависимости от того, чего вы хотите достичь …) ,

Самый простой способ – это:

добавьте этот код в mainactivity.java

 public void start(View view) { stop.setBackgroundResource(R.color.red); start.setBackgroundResource(R.color.yellow); } public void stop(View view) { stop.setBackgroundResource(R.color.yellow); start.setBackgroundResource(R.color.red); } 

а затем в вашей основной деятельности

   

или следовать этому руководству

  • Динамическое обновление адаптера AutoCompleteTextView
  • Android: что лучше - несколько действий или переключения просмотров вручную?
  • NDK - Как использовать сгенерированную библиотеку .so в другом проекте
  • Как получить данные из DialogFragment в fragment?
  • как конвертировать миллисекунды в формат даты в android?
  • Фрагмент в ViewPager с использованием FragmentPagerAdapter пуст во второй раз
  • Просмотр HTML-клика веб-браузера в действии (код Java)
  • Какие функции имеют прогрессивные веб-приложения в сравнении с родными приложениями и наоборот, на Android
  • Проблема с быстрым прокруткой с помощью ListAdapter и SectionIndexer
  • Как получить название города из координат широты и долготы в Картах Google?
  • Какой адаптер использовать для использования HashMap в ListView
  • Давайте будем гением компьютера.