三星设备上的TextInputLayout旋转问题

时间:2020-03-11 13:05:52

标签: android samsung-mobile autocompletetextview android-textinputlayout

我想创建带有材质设计风格的微调器。我的问题是,当我在一个布局中有2个微调器时,然后在微调器1中选择了微调器2上的电话旋转选择。

例如:

Spinner1具有项test1,test2,test3。

Spinner2具有项test4,test5,test6。

当我在 Spinner1 上选择 test2 并在 Spinner2 上选择 test5 并旋转手机,然后在 Spinner1上选中的项目是 test5 ,这甚至是不可能的。它仅在我的测试设备Samsung S9上发生。当我在OnePlus或Pixel模拟器等其他手机上执行相同操作时,则Spinner1的选择保持不变,即为 test2

MainActivity代码

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"));
}

activity_main代码

<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>

0 个答案:

没有答案