Проблема поворота TextInputLayout на устройстве Samsung - PullRequest
0 голосов
/ 11 марта 2020

Я хочу создать блесну с дизайном материала. Моя проблема в том, что когда у меня есть 2 счетчика в одной раскладке, при вращении телефона в счетчике 1 выбирается вращение телефона. *

Например:

В Spinner1 есть элементы test1, test2, test3.

У Spinner2 есть элементы test4, test5, test6.

Когда я выбираю test2 на Spinner1 и test5 на Spinner2 и поверните телефон, затем на Spinner1 выбранный пункт - test5 , что даже не должно быть возможным. Это происходит только на моем тестовом устройстве Samsung S9. Когда я делаю то же самое на других телефонах, таких как OnePlus или Pixel emulator, выбор Spinner1 остается без изменений test2 .

MainActivity code

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    TestSpinner testTestSpinner1 = findViewById(R.id.testSpinner1);
    testTestSpinner1.setItems(Arrays.asList("test1", "test2", "test3"));

    TestSpinner testTestSpinner2 = findViewById(R.id.testSpinner2);
    testTestSpinner2.setItems(Arrays.asList("test4", "test5", "test6"));
}

код активности_основы

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
tools:context=".MainActivity">

<com.skolimowski.testexposeddropdownmenu.TestSpinner
    android:id="@+id/testSpinner1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<com.skolimowski.testexposeddropdownmenu.TestSpinner
    android:id="@+id/testSpinner2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@id/testSpinner1" />

Код TestSpinner

public class TestSpinner extends FrameLayout {
private ArrayAdapter<String> adapter;

public TestSpinner(@NonNull Context context) {
    super(context);

    init(context);
}

public TestSpinner(@NonNull Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);

    init(context);
}

public TestSpinner(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);

    init(context);
}

private void init(Context context) {
    FrameLayout parentLayout = (FrameLayout) inflate(context, R.layout.spinner_layout, this);
    TextInputLayout textInputLayout = parentLayout.findViewById(R.id.til);
    AutoCompleteTextView autoCompleteTextView = textInputLayout.findViewById(R.id.ac);

    adapter = new ArrayAdapter<>(context, android.R.layout.simple_dropdown_item_1line);
    autoCompleteTextView.setAdapter(adapter);
}

public void setItems(List<String> items) {
    adapter.clear();
    adapter.addAll(items);
}

}

код spinner_layout

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/til"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <AutoCompleteTextView
        android:id="@+id/ac"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:inputType="none" />
</com.google.android.material.textfield.TextInputLayout>

...