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