2016-09-14 5 views
1

Когда я нажимаю кнопку изменения изображения, но моя проблема заключается в том, когда я отпуская кнопку, изображение снова меняется (не сохраняет изображения). Я новичок в программировании на Java.Измените изображение кнопки при нажатии, чтобы изображение кнопки не менялось при отпускании.

Моя раскладка:

<Button 
    android:background="@drawable/volume" 
    android:layout_width="90dp" 
    android:layout_height="90dp" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true"/> 

И это мой XML в вытяжке:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true" 
    android:drawable="@drawable/volume_off" /> <!-- pressed --> 

<item android:drawable="@drawable/volume_on" /> <!-- default --> 

+0

Я думаю, что, возможно, вам действительно нужны вещи ToggleButton – RRTW

+0

Это работает ,,, благодаря всем ,,, Я очень ценю это. –

ответ

0

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

image1: R.drawable.image_first image2: R.drawable.image_second

и в файле макета XML у вас есть:

<Button 
    android:background="@drawable/volume" 
    android:layout_width="90dp" 
    android:layout_height="90dp" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" 
    android:onClick="click"/> 

в деятельности вы можете сделать:

public Class myActivity extends Activity{ 

Button mButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.myactivity_layout); 
    mButton = (Button) findViewById(R.id.button); 
} 

public void click(View v){ 
    mButton.setBackgroundResource(R.drawable.image_second); 
} 

} 

Если вы хотите, чтобы вернуться к предыдущему изображению после нажатия снова, только сохранить состояние вашей кнопки (булевы нажмите ed = true/false) и поставить оператор if внутри общедоступного клика void.

+0

yess ,, он работает ,,, но, как вы сказали, вернуться в предыдущее изображение, я должен внутри if, if, я путаю, как внутри, если утверждение в публичной пустоте, если в bascom avr и arduino IDE, i может легко понять, но в java я действительно не понимаю ,,, бы вы приводили примеры кодов, если заявление в публичном void ... спасибо раньше, –

+0

спасибо Alex, вы сделали мой день ..: D –

0

Вы хотите удалить изображение по умолчанию из селектора

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true" 
android:drawable="@drawable/volume_off" /> <!-- pressed --> 
</selector> 

удалить это строка <!--<item android:drawable="@drawable/volume_on" /> remove default-->

Установлен по умолчанию, когда состояние кнопки изменено.

<Button 
android:background="@drawable/volume" 
android:layout_width="90dp" 
android:layout_height="90dp" 
android:src="@drawable/volume_on" 
android:layout_centerVertical="true" 
android:layout_centerHorizontal="true"/> 
+0

, если я удаляю эту строку, поэтому кнопка будет невидимой, кнопка будет видна (показать Volume_off), когда я нажму кнопку, –

1

В вашем случае вы хотите изменить указатель уровня громкости, я думаю, что вы должны делать это программно.

//At the top of your activity,declare a global variable 
    boolean isVolumeOn = true; 

    volumeButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        //check your volume status 
        if(isVolumeOn){ 
         view.setBackgroundResource(R.drawable.volume_off); 
         isVolumeOn = false; 
         //Turn off your volume here 

        }else{ 
         view.setBackgroundResource(R.drawable.volume_on); 
         isVolumeOn = true 
         //Turn on your volume here 

        } 
       } 
      }); 
+0

спасибо QuangNguyen, чтобы ответить на мой вопрос, я не понимаю с помощью «isVolumeOn». что это значит? Можете ли вы дать мне более наглядную примерную программу, извините, что я новичок здесь. –

+0

спасибо QungNguyen, я очень ценю это –

+0

Вы добавляете функцию, которую пользователи могут включать или отключать в вашем приложении? –

0

в моем content_main.xml

<Button 
    android:id="@+id/button" 
    android:background="@drawable/volume_on" 
    android:layout_width="90dp" 
    android:layout_height="90dp" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" 
    android:onClick="click" /> 

в моей MainActivity.java

public Class myActivity extends AppCompatActivity{ 

громкости Кнопка; boolean isPressed = false;

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.myactivity_layout); 
    volume = (Button) findViewById(R.id.button); 
} 

public void click(View v){ 
if (isPressed) { 
    volume.setBackgroundResource(R.drawable.volume_off); 
    Toast.makeText(this, "Volume Off", 
      Toast.LENGTH_SHORT).show(); 
}else{ 
    volume.setBackgroundResource(R.drawable.volume_on); 
    Toast.makeText(this, "Volume On", 
      Toast.LENGTH_SHORT).show(); 
} 
    isPressed=!isPressed; 
} 
Смежные вопросы