В настоящее время у меня есть три кнопки просмотра изображений, которые вызывают три разные функции в моем приложении для Android. Вместо трех кнопок я хочу использовать одну кнопку, которая должна вызывать каждую функцию при каждом нажатии (например, кнопка-переключатель). Пожалуйста, найдите мою текущую XML-структуру трех независимых кнопок (ImageView)
<ImageView
android:id = "@+id/img_align_left"
android:layout_width = "@dimen/icon_width"
android:layout_height = "wrap_content"
android:layout_weight = "1"
android:contentDescription = "TODO"
android:padding = "10dp"
app:srcCompat = "@drawable/ic_format_align_left" />
<ImageView
android:id = "@+id/img_align_center"
android:layout_width = "@dimen/icon_width"
android:layout_height = "wrap_content"
android:layout_weight = "1"
android:padding = "10dp"
app:srcCompat = "@drawable/ic_format_align_center" />
<ImageView
android:id = "@+id/img_align_right"
android:layout_width = "@dimen/icon_width"
android:layout_height = "wrap_content"
android:layout_weight = "1"
android:padding = "10dp"
app:srcCompat = "@drawable/ic_format_align_right" />
А вот скрипт вызова функции, который используется в основной активности.
img_align_left.setOnClickListener { alingnText(View.TEXT_ALIGNMENT_TEXT_START) }
img_align_center.setOnClickListener { alingnText(View.TEXT_ALIGNMENT_CENTER) }
img_align_right.setOnClickListener { alingnText(View.TEXT_ALIGNMENT_TEXT_END) }
Дайте мне знать, если запрос дает вам достаточно информации. Спасибо!
-------------------------ОБНОВИТЬ------------------------ -------------
Основываясь на коде @Kam, я смог решить проблему (я использую Kotlin). Вот код.
var count=0
img_align_left.setOnClickListener {
when (count) {
0 -> {
alingnText(View.TEXT_ALIGNMENT_TEXT_START)
}
1 -> {
alingnText(View.TEXT_ALIGNMENT_CENTER)
}
2 ->
{alingnText(View.TEXT_ALIGNMENT_TEXT_END)}
}
if (count>1)
count=0
else
count++}
Спасибо :)




Что у вас может быть, так это кнопка и счетчик, для которого вы последний раз меняли imageView.
int counter = 0;
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
switch(counter){
case 0:
//First ImageView
counter++;
break;
case 1:
//Second ImageView
counter++;
break;
case 2:
//Third ImageView
counter = 0;
break;
}
}
});
Таким образом, каждый раз, когда вы нажимаете кнопку, значение счетчика будет изменяться, пока вы не достигнете третьего изображения. Как только вы щелкнете по ней еще раз, кнопка сфокусируется на первом изображении.
@KamСпасибо. Ваш код помог мне решить проблему. Мое решение, основанное на вашем ответе, было обновлено в моем запросе (я использую Kotlin)
Спасибо за ответ. Проверю с тем же и вернусь. Я новичок в андроиде :)