java - 如何通过按按钮重置 MDC 微调器(AutoCompleteTextview/ExposedDropdownMenu)中的选定项目

标签 java android drop-down-menu material-design spinner

我正在开发一个简单的棒球评分应用程序,用户可以从两个 Material 设计组件下拉菜单中选择对手球队。用户通过按相应球队列上的按钮来跟踪分数。有一个重置按钮,可以将所有分数重置回“0”。我已经弄清楚了这部分。我需要帮助的是,我希望这个重置按钮也将微调器重置回显示提示的默认值。我对它如何与常规旋转器一起工作有点熟悉,但谷歌已经放弃了旋转器,转而在 Material Design 中的 TextInputLayout 中使用 AutoCompleteTextview。我遇到了clearListSelection(),但不完全确定我是否正确实现了它。任何帮助将不胜感激。

Better visual of the app

MainActivity.java


import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatAutoCompleteTextView;

import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.TextView;

import com.google.android.material.internal.Experimental;

public class MainActivity extends AppCompatActivity {

    private static final String[] TEAMS_A = new String[]{
            "Arizona Diamondbacks",
            "Atlanta Braves",
            "Baltimore Orioles",
            "Boston Red Sox",
            "Chicago Cubs",
            "Chicago White Sox",
            "Cincinnati Reds",
            "Cleveland Indians",
            "Colorado Rockies",
            "Detroit Tigers",
            "Miami Marins",
            "Houston Astros",
            "Kansas City Royals",
            "Los Angeles Angels",
            "Los Angeles Dodgers",
            "Milwaukee Brewers",
            "Minnesota Twins",
            "New York Mets",
            "New York Yankess",
            "Oakland Athletics",
            "Philadelphia Phillies",
            "Pittsburgh Pirates",
            "St. Louis Cardinals",
            "San Diego Padres",
            "San Francisco Giants",
            "Seattle Mariners",
            "Tampa Bay Rays",
            "Texas Rangers",
            "Toronto Blue Jays",
            "Washington Nationals"
    };

    private static final String[] TEAMS_B = new String[]{
            "Arizona Diamondbacks",
            "Atlanta Braves",
            "Baltimore Orioles",
            "Boston Red Sox",
            "Chicago Cubs",
            "Chicago White Sox",
            "Cincinnati Reds",
            "Cleveland Indians",
            "Colorado Rockies",
            "Detroit Tigers",
            "Miami Marins",
            "Houston Astros",
            "Kansas City Royals",
            "Los Angeles Angels",
            "Los Angeles Dodgers",
            "Milwaukee Brewers",
            "Minnesota Twins",
            "New York Mets",
            "New York Yankess",
            "Oakland Athletics",
            "Philadelphia Phillies",
            "Pittsburgh Pirates",
            "St. Louis Cardinals",
            "San Diego Padres",
            "San Francisco Giants",
            "Seattle Mariners",
            "Tampa Bay Rays",
            "Texas Rangers",
            "Toronto Blue Jays",
            "Washington Nationals"
    };

    int scoreTeamA = 0;

    int scoreTeamB = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.dropdown_menu_popup_item, TEAMS_A);
        final AutoCompleteTextView filledExposedDropdown = findViewById(R.id.filled_exposed_dropdown_team_a);
        filledExposedDropdown.setAdapter(adapter);


        ArrayAdapter<String> adapter2 = new ArrayAdapter<>(this, R.layout.dropdown_menu_popup_item, TEAMS_B);
        final AutoCompleteTextView filledExposedDropdown2 = findViewById(R.id.filled_exposed_dropdown_team_b);
        filledExposedDropdown2.setAdapter(adapter2);

        displayForTeamA(0);
        displayForTeamB(0);
    }

    /**
     * Increase the score for Team A by 4 points.
     */
    public void addFourForTeamA(View v) {
        scoreTeamA = scoreTeamA + 4;
        displayForTeamA(scoreTeamA);
    }

    /**
     * Increase the score for Team A by 3 points.
     */
    public void addThreeForTeamA(View v) {
        scoreTeamA = scoreTeamA + 3;
        displayForTeamA(scoreTeamA);
    }

    /**
     * Increase the score for Team A by 2 points.
     */
    public void addTwoForTeamA(View v) {
        scoreTeamA = scoreTeamA + 2;
        displayForTeamA(scoreTeamA);
    }

    /**
     * Increase the score for Team A by 1 point.
     */
    public void addOneForTeamA(View v) {
        scoreTeamA = scoreTeamA + 1;
        displayForTeamA(scoreTeamA);
    }

    /**
     * Increase the score for Team B by 4 points.
     */
    public void addFourForTeamB(View v) {
        scoreTeamB = scoreTeamB + 4;
        displayForTeamB(scoreTeamB);
    }

    /**
     * Increase the score for Team B by 3 points.
     */
    public void addThreeForTeamB(View v) {
        scoreTeamB = scoreTeamB + 3;
        displayForTeamB(scoreTeamB);
    }

    /**
     * Increase the score for Team B by 2 points.
     */
    public void addTwoForTeamB(View v) {
        scoreTeamB = scoreTeamB + 2;
        displayForTeamB(scoreTeamB);
    }

    /**
     * Increase the score for Team B by 1 point.
     */
    public void addOneForTeamB(View v) {
        scoreTeamB = scoreTeamB + 1;
        displayForTeamB(scoreTeamB);
    }

    /**
     * Resets the score for both teams back to 0.
     */
    public void resetScore(View v) {
        scoreTeamA = 0;
        scoreTeamB = 0;
        displayForTeamA(scoreTeamA);
        displayForTeamB(scoreTeamB);
        clearListSelection();
    }

    /**
     * Displays the given score for Team A.
     */
    public void displayForTeamA(int score) {
        TextView scoreView = (TextView) findViewById(R.id.team_a_score);
        scoreView.setText(String.valueOf(score));
    }

    /**
     * Displays the given score for Team B.
     */
    public void displayForTeamB(int score) {
        TextView scoreView = (TextView) findViewById(R.id.team_b_score);
        scoreView.setText(String.valueOf(score));
    }


    public void clearListSelection() {
        AutoCompleteTextView filledExposedDropdown = findViewById(R.id.filled_exposed_dropdown_team_a);
        filledExposedDropdown.clearListSelection();
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:override="true">

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:scaleType="centerCrop"
        android:src="@drawable/yankees_3_new" />

    <LinearLayout
        android:id="@+id/score_columns"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="56dp"
        android:layout_marginBottom="16dp"
        android:orientation="horizontal">

        <LinearLayout
            android:id="@+id/team_a_column"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="32dp"
                android:fontFamily="sans-serif-medium"
                android:gravity="center_horizontal"
                android:padding="16dp"
                android:text="@string/team_a"
                android:textColor="@android:color/white"
                android:textSize="24sp" />

            <com.google.android.material.textfield.TextInputLayout
                style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"
                android:id="@+id/textinputlayout_teamA"
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:textColorHint="@color/text_color">

                <AutoCompleteTextView
                    android:id="@+id/filled_exposed_dropdown_team_a"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:editable="false"
                    android:ellipsize="end"
                    android:singleLine="true"
                    android:textColor="@android:color/white" />
            </com.google.android.material.textfield.TextInputLayout>

            <TextView
                android:id="@+id/team_a_score"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="24dp"
                android:fontFamily="sans-serif-medium"
                android:gravity="center_horizontal"
                android:textColor="@android:color/white"
                android:textSize="56sp"
                tools:text="0" />

            <com.google.android.material.button.MaterialButton
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginBottom="8dp"
                android:onClick="addFourForTeamA"
                android:text="@string/four_runs" />

            <com.google.android.material.button.MaterialButton
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginBottom="8dp"
                android:onClick="addThreeForTeamA"
                android:text="@string/three_runs" />

            <com.google.android.material.button.MaterialButton
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginBottom="8dp"
                android:onClick="addTwoForTeamA"
                android:text="@string/two_runs" />

            <com.google.android.material.button.MaterialButton
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginBottom="40dp"
                android:onClick="addOneForTeamA"
                android:text="@string/one_run" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:background="@android:color/white" />

        <LinearLayout
            android:id="@+id/team_b_column"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="32dp"
                android:fontFamily="sans-serif-medium"
                android:gravity="center_horizontal"
                android:padding="16dp"
                android:text="@string/team_b"
                android:textColor="@android:color/white"
                android:textSize="24sp" />

            <com.google.android.material.textfield.TextInputLayout
                style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:hint="@string/team_b"
                android:textColorHint="@color/text_color">

                <AutoCompleteTextView
                    android:id="@+id/filled_exposed_dropdown_team_b"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:editable="false"
                    android:ellipsize="end"
                    android:singleLine="true"
                    android:textColor="@android:color/white" />
            </com.google.android.material.textfield.TextInputLayout>

            <TextView
                android:id="@+id/team_b_score"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="24dp"
                android:fontFamily="sans-serif-medium"
                android:gravity="center_horizontal"
                android:textColor="@android:color/white"
                android:textSize="56sp"
                tools:text="0" />

            <com.google.android.material.button.MaterialButton
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginBottom="8dp"
                android:onClick="addFourForTeamB"
                android:text="@string/four_runs" />

            <com.google.android.material.button.MaterialButton
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginBottom="8dp"
                android:onClick="addThreeForTeamB"
                android:text="@string/three_runs" />

            <com.google.android.material.button.MaterialButton
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginBottom="8dp"
                android:onClick="addTwoForTeamB"
                android:text="@string/two_runs" />

            <com.google.android.material.button.MaterialButton
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"

                android:layout_marginBottom="40dp"
                android:onClick="addOneForTeamB"
                android:text="@string/one_run" />
        </LinearLayout>

    </LinearLayout>

    <com.google.android.material.button.MaterialButton
        android:id="@+id/reset_button"
        android:layout_width="128dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/score_columns"
        android:layout_centerHorizontal="true"
        android:onClick="resetScore"
        android:text="@string/reset_button" />

    <com.google.android.material.button.MaterialButton
        android:id="@+id/reset_button_teamA"
        android:layout_width="128dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/reset_button"
        android:layout_centerHorizontal="true"
        android:onClick="resetScore"
        android:text="@string/reset_button" />

</RelativeLayout>

最佳答案

您可以简单地使用 Spinner.setSelection(intposition) 方法并为第一项传递 0

关于java - 如何通过按按钮重置 MDC 微调器(AutoCompleteTextview/ExposedDropdownMenu)中的选定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58071525/

相关文章:

java - A* 寻路 java 无法正常工作

android - 闭合微调器的文本颜色

angularjs - 如何制作 Angular Material <md-select> + UI Router View 切换器?

html - 如何在 Firefox 中设置选择框及其边框的颜色?

java - ByteArrayInputStream 与自己的类

Java 是否保证非规范化数字?

java - 如何使用单击按钮删除和替换 JPanel?

java - 如何在开始预览时自动对焦自定义相机而不触摸屏幕?

android - 使用列表、 fragment 和 map 实现选项卡的最佳方式?

jquery - 下拉菜单淡入?