Как включить одну из кнопок переключения - PullRequest
0 голосов
/ 25 февраля 2020

Я хочу, чтобы другая кнопка переключалась при включении.

<item android:state_checked="true"
    android:drawable="@drawable/press"></item>
<item android:drawable="@drawable/nomal"></item>

Это код xml моей кнопки. Этот код выполнен в режиме "рисования".

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

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

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_checked" android:state_checked="true" />
    <item android:drawable="@drawable/ic_unchecked" android:state_checked="false" />
</selector>

и оборачивает обе кнопки в RadioGroup; затем проходите эту группу в al oop всякий раз, когда кнопка проверяется / нажимается, а затем отменяет эти кнопки методом setChecked().

Layout

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <RadioGroup
        android:id="@+id/toggleGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:orientation="horizontal">

        <ToggleButton
            android:id="@+id/toggle_btn_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/toggle_btn_selector"
            android:onClick="onToggle"
            android:textOff=""
            android:textOn="" />

        <ToggleButton
            android:id="@+id/toggle_btn_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/toggle_btn_selector"
            android:onClick="onToggle"
            android:textOff=""
            android:textOn="" />
    </RadioGroup>

</LinearLayout>

Поведение

public class MainActivity extends AppCompatActivity {

    RadioGroup mGroup;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mGroup = findViewById(R.id.toggleGroup);
    }

    public void onToggle(View view) {

        ToggleButton checkedBtn = ((ToggleButton) view);

        for (int j = 0; j < mGroup.getChildCount(); j++) {
            ToggleButton toggleButton = (ToggleButton) mGroup.getChildAt(j);
            int id = toggleButton.getId();
            if (view.getId() == id)
                continue;
            toggleButton.setChecked(!checkedBtn.isChecked());
        }

    }
}
0 голосов
/ 25 февраля 2020

Вам необходимо создать RadioGroup и добавить к нему 2 RadioButtons с возможностью рисования. Оформить заказ по второй ссылке, там будет описано, как это сделать правильно. Также вам нужно поменять свой xml нажмите на отмеченный

...