禁用微调器中的第一个项目

时间:2017-12-13 11:20:24

标签: android spinner

我想在旋转器中禁用第一项,如下所示: 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>

3 个答案:

答案 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;
}
};

第二种方法,请参见下面的链接。

How to add a hint to Spinner in Android