【发布时间】:2019-09-24 10:19:15
【问题描述】:
我正在开发一个简单的棒球计分应用程序,用户可以从两个 Material Design Components 下拉菜单中选择对手球队。用户通过按下相应团队列上的按钮来跟踪分数。有一个重置按钮,可以将所有分数重置回“0”。我已经弄清楚了这部分。我需要帮助的是,我希望这个重置按钮也将微调器重置为显示提示的默认值。我模糊地熟悉它如何与常规微调器一起工作,但谷歌已经放弃微调器,转而支持材料设计中 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>
【问题讨论】:
-
您是否以某种方式解决了这个问题?我想要做的就是能够像文本字段一样清除它
标签: java android drop-down-menu material-design spinner