我想在旋转器中禁用第一项,如下所示: enter link description here 但是当我这样做时,就像在这段代码中一样,我的布局显示两次,一次显示在另一端。
final Spinner spinner = (Spinner) findViewById(R.id.spinner);
String[] choose = new String[]{
"Get Day",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
};
final List<String> day_of_weeks = new ArrayList<>(Arrays.asList(choose));
final ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,R.layout.activity_main, R.id.textView, day_of_weeks) {
@Override
public boolean isEnabled(int position) {
if (position == 0) {
return false;
} else {
return true;
}
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
TextView textview = (TextView) view;
if (position == 0) {
textview.setTextColor(Color.GREEN);
} else {
textview.setTextColor(Color.BLACK);
}
return view;
}
};
spinnerArrayAdapter.setDropDownViewResource(R.layout.activity_main);
spinner.setAdapter(spinnerArrayAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selectedItemText = (String) parent.getItemAtPosition(position);
if (position > 0) {
Toast.makeText(getApplicationContext(), "Selected:" + selectedItemText, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
所以我开始更改旧代码,但我不知道如何禁用第一项。主要是我想要这样的代码:
final Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.Choose, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
String day = spinner.getSelectedItem().toString();
MainActivity.this.number = position + 1;
//Toast.makeText(context, "Wybrano: " + day,Toast.LENGTH_LONG).show();
switch (position){
case 1:
Toast.makeText(context, "You choose " + day,Toast.LENGTH_LONG).show();
//some code here
break;
case 2:
Toast.makeText(context, "You choose " + day,Toast.LENGTH_LONG).show();
//some code here
break;
case 3:
Toast.makeText(context, "You choose: " + day,Toast.LENGTH_LONG).show();
break;
case 4:
Toast.makeText(context, "You choose " + day,Toast.LENGTH_LONG).show();
break;
case 5:
Toast.makeText(context, "You choose " + day,Toast.LENGTH_LONG).show();
break;
case 6:
Toast.makeText(context, "You choose " + day,Toast.LENGTH_LONG).show();
break;
case 7:
Toast.makeText(context, "You choose " + day,Toast.LENGTH_LONG).show();
break;
default:
Toast.makeText(context, "You choose " + "er",Toast.LENGTH_LONG).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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"
tools:context="com.example.budzik.MainActivity"
>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:layout_marginTop="24dp"
android:text="Ustaw Budzik"
android:textColor="@color/colorAccent"
android:textSize="24sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp"
android:text="@string/zapisz_dane"
android:textColor="@android:color/holo_orange_dark"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:layout_marginTop="48dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<TimePicker
android:id="@+id/timePicker"
android:layout_width="320dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginRight="72dp"
android:layout_marginStart="72dp"
android:layout_marginTop="84dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spinner" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="24dp"
android:layout_marginTop="20dp"
android:text="@string/ustaw_dz"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button"
tools:ignore="MissingConstraints" />
<ToggleButton
android:id="@+id/toggleButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="132dp"
android:layout_marginTop="128dp"
android:text="@string/Przelocznik"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="MissingConstraints" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="@string/on"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spinner"
tools:ignore="MissingConstraints"
tools:text="on"
/>
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="56dp"
android:layout_marginTop="88dp"
android:text="@string/off"
android:visibility="visible"
android:onClick="cancelalarm"
app:layout_constraintStart_toEndOf="@+id/toggleButton2"
app:layout_constraintTop_toBottomOf="@+id/button"
tools:ignore="MissingConstraints,OnClick"
tools:text="off"
/>
</android.support.constraint.ConstraintLayout>
我的strings.xml
<resources>
<string name="app_name">Budzik</string>
<string-array name="Choose">
<item>Get Day</item>
<item>Monday</item>
<item>Tuesday</item>
<item>Wednesday</item>
<item>Thursday</item>
<item>Friday</item>
<item>Saturday</item>
<item>Sunday</item>
</string-array>
<string name="zapisz_dane">Zapisz</string>
<string name="ustaw_dz">Ustaw Dźwięk</string>
<string name="Przelocznik">Przel</string>
<string name="on">on</string>
<string name="off">off</string>
<string name="Day">Get day</string>
答案 0 :(得分:2)
尝试
spinner.setSelection(position, false);
答案 1 :(得分:0)
使用您之前的代码进行细微更改,请检查以下代码
final Spinner spinner = (Spinner) findViewById(R.id.spinner);
List<String> list = new ArrayList<String>();
list.add("Get Day");
list.add("Monday");
list.add("Tuesday");
list.add("Wednesday");
list.add("Thursday");
list.add("Friday");
list.add("Saturday");
list.add("Sunday");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
R.layout.spinner_text, list) {
@Override
public boolean isEnabled(int position) {
if (position == 0) {
return false;
} else {
return true;
}
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
TextView textview = (TextView) view;
if (position == 0) {
textview.setTextColor(Color.GREEN);
} else {
textview.setTextColor(Color.BLACK);
}
return view;
}
};
spinnerArrayAdapter.setDropDownViewResource(R.layout.spinner_text);
spinner.setAdapter(spinnerArrayAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selectedItemText = (String) parent.getItemAtPosition(position);
if (position > 0) {
Toast.makeText(getApplicationContext(), "Selected:" + selectedItemText, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
添加布局spinner_text.xml
文件
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layoutDirection="ltr"
android:id="@android:id/text1"
style="@style/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="50dp"
android:ellipsize="marquee"
android:paddingLeft="12dp"
android:layout_margin="10dp"
android:gravity="center_vertical"/>
在styles.xml
添加资源
<style name="spinnerItemStyle" parent="android:Widget.TextView.SpinnerItem">
<item name="android:divider">@color/colorPrimaryDark</item>
<item name="android:dividerHeight">1dp</item>
</style>
<style name="spinnerDropDownItemStyle" parent="android:TextAppearance.Widget.TextView.SpinnerItem">
</style>
答案 2 :(得分:0)
ArrayAdapter adapter = new ArrayAdapter(this, R.layout.your_spinner_layout,
spinnerArray) {
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return super.getDropDownView(position + 1, convertView, parent);
}
public int getCount() {
return spinnerArray.size - 1;
}
};
第二种方法,请参见下面的链接。