2016-05-04 31 views
13

Tôi đang cố gắng thêm Gợi ý vào tiện ích xoay tròn vì không có tùy chọn Gợi ý như trong EditText, tôi muốn hiển thị Giới tính dưới dạng Gợi ý và khi được nhấp vào nó phải chỉ hiển thị Nam và Nữ không phải là gợi ý.Cách thêm Gợi ý vào spinner trong XML

Cách chỉ có thể thực hiện bằng cách sử dụng XML

Mã spinner của XML.

<Spinner 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/spinner1" 
     android:entries="@array/gender" 
     android:layout_marginTop="10dp" 
     android:layout_marginLeft="25dp" 
     android:layout_marginRight="25dp" 
     android:layout_gravity="center_horizontal" /> 

Chuỗi mảng của spinner

<string-array name="gender"> 
    <item>Male</item> 
    <item>Female</item> 
</string-array> 
+1

Bản sao có thể có của [Android: Spinner hint] (http://stackoverflow.com/questions/6602339/android-spinner-hint) –

+0

@ A-Jay..kiểm tra câu trả lời của tôi ... giúp bạn một cách an toàn! –

+0

sự cố của bạn có được giải quyết không? –

Trả lời

-3

Hãy thử sử dụng tài sản sau đây:

android:prompt="Gender" 
+0

tôi đã thử nhưng nó không hoạt động –

7

Có hai cách bạn có thể sử dụng spinner:

cách tĩnh

android:spinnerMode="dialog" 

và sau đó thiết lập:

android:prompt="@string/hint_resource" 

cách năng động

spinner.setPrompt("Gender"); 

Lưu ý: Nó sẽ làm việc như một Gợi ý nhưng không thực sự nó được.

Có thể trợ giúp!

+6

Nhắc nó không phải là một gợi ý. – Yazon2006

+0

Quá mơ hồ. Không đáp ứng ngữ cảnh. – muruthi

+2

android: prompt = "Giới tính" không thể thực hiện điều đó trong XML do lỗi nhưng sẽ mất một "@ string/hint_resource" – JPM

-1

thử

spinner1.setPrompt("Your choice"); 
+0

Nhắc nó không phải là một gợi ý. – Yazon2006

-1

nếu bạn Spinner không hỗ trợ android này: nhanh chóng, nên sử dụng android.support.v7.widget.AppCompatSpinner để thay thế.

<android.support.v7.widget.AppCompatSpinner 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:prompt="Gender" /> 
+0

Nhắc nó không phải là một gợi ý. – Yazon2006

1

Bước 1:

mảng của bạn trông như thế nào. mục cuối gợi ý của bạn

Ví dụ: chuỗi riêng [] yourArray = new String [] {"Staff", "Student", "Your Gint"};

Bước 2:

Tạo HintAdpater.java (chỉ cần sao chép & dán)

Lớp này không quay trở lại mục cuối cùng .. Vì vậy Gợi ý của bạn không hiển thị.

HintAdapter.java

package ajax.com.vvcoe.utils; 

import android.content.Context; 
import android.widget.ArrayAdapter; 

import java.util.List; 


public class HintAdapter extends ArrayAdapter<String> { 


public HintAdapter(Context context, int resource) { 
    super(context, resource); 
} 

public HintAdapter(Context context, int resource, int textViewResourceId) { 
    super(context, resource, textViewResourceId); 
} 

public HintAdapter(Context context, int resource, String[] objects) { 
    super(context, resource, objects); 
} 

public HintAdapter(Context context, int resource, int textViewResourceId, String[] objects) { 
    super(context, resource, textViewResourceId, objects); 
} 

public HintAdapter(Context context, int resource, List<String> objects) { 
    super(context, resource, objects); 
} 

public HintAdapter(Context context, int resource, int textViewResourceId, List<String> objects) { 
    super(context, resource, textViewResourceId, objects); 
} 

@Override 
public int getCount() { 
    // don't display last item. It is used as hint. 
    int count = super.getCount(); 
    return count > 0 ? count - 1 : count; 
} 
} 

Bước 3:

Set spinner bộ chuyển đổi như

HintAdapter hintAdapter=new HintAdapter(this,android.R.layout.simple_list_item_1,yourArray); 
    yourSpinner.setAdapter(hintAdapter); 
    // show hint 
    yourSpinner.setSelection(hintAdapter.getCount()); 

tín dụng này đi vào @Yakiv Mospan từ câu trả lời này - https://stackoverflow.com/a/22774285/3879847

tôi sửa đổi một số ch chỉ anges ..

+0

Oooh của tôi. đúng thứ tôi cần. –

16

Trong bộ điều hợp, bạn có thể đặt mục đầu tiên là bị tắt. Bên dưới là mã mẫu

@Override 
public boolean isEnabled(int position) { 
    if (position == 0) { 
     // Disable the first item from Spinner 
     // First item will be use for hint 
     return false; 
    } else { 
     return true; 
    } 
} 

Và đặt mục đầu tiên thành màu xám.

@Override 
public View getDropDownView(int position, View convertView, 
            ViewGroup parent) { 
    View view = super.getDropDownView(position, convertView, parent); 
    TextView tv = (TextView) view; 
    if (position == 0) { 
     // Set the hint text color gray 
     tv.setTextColor(Color.GRAY); 
    } else { 
     tv.setTextColor(Color.BLACK); 
    } 
    return view; 
} 

Và nếu người dùng chọn mục đầu tiên thì không làm gì cả.

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    String selectedItemText = (String) parent.getItemAtPosition(position); 
    // If user change the default selection 
    // First item is disable and it is used for hint 
    if (position > 0) { 
     // Notify the selected item text 
     Toast.makeText(getApplicationContext(), "Selected : " + selectedItemText, Toast.LENGTH_SHORT).show(); 
    } 
} 

Tham khảo liên kết bên dưới để biết chi tiết.

How to add a hint to Spinner in Android

+0

Hoạt động hoàn hảo ... và thật đơn giản – ariel

0

Bí quyết là dòng này

((TextView) view).setTextColor(ContextCompat.getColor(mContext, R.color.login_input_hint_color)); 

sử dụng nó trong các onItemSelected. Đây là mã của tôi có nhiều ngữ cảnh hơn

List<String> list = getLabels(); // First item will be the placeholder 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_spinner_item, list); 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(dataAdapter); 
     spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       // First item will be gray 
       if (position == 0) { 
        ((TextView) view).setTextColor(ContextCompat.getColor(mContext, R.color.login_input_hint_color)); 
       } else { 
        ((TextView) view).setTextColor(ContextCompat.getColor(mContext, R.color.primary_text)); 
       } 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
      } 
     }); 
2

Điều này có thể được thực hiện một cách rất đơn giản. Thay vì thiết lập bộ điều hợp bằng cách sử dụng các giá trị dựng sẵn (android.R.layout.simple_list_item_1), hãy tạo bố cục xml của riêng bạn cho cả TextView và DropDown và sử dụng chúng. Trong bố cục TextView, xác định văn bản Gợi ý và màu Gợi ý. Bước cuối cùng, tạo và làm trống mục là mục đầu tiên trong mảng mục được xác định trong Chuỗi.

<string-array name="professional_qualification_array"> 
    <item></item> 
    <item>B.Pharm</item> 
    <item>M.Pharm</item> 
    <item>PharmD</item> 
</string-array> 

Tạo layout XML cho Spinner TextView (spnr_qualification.xml)

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textSize="20sp" 
    android:hint="Qualification" 
    android:textColorHint="@color/light_gray" 
    android:textColor="@color/blue_black" /> 

Tạo layout XML cho spinner thả xuống. (drpdn_qual.xml)

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1" 
style="?android:attr/spinnerDropDownItemStyle" 
android:maxLines="1" 
android:layout_width="match_parent" 
android:layout_height="?android:attr/listPreferredItemHeight" 
android:ellipsize="marquee" 
android:textColor="#FFFFFF"/> 

Xác định spinner trong bố cục XML chính

<Spinner 
android:id="@+id/spnQualification" 
android:layout_width="match_parent" 
android:layout_height="40dp" 
android:layout_marginTop="10dp" 
android:paddingLeft="10dp" 
android:paddingBottom="5dp" 
android:paddingTop="5dp" 
/> 

Và cuối cùng trong mã, trong khi thiết lập bộ điều hợp cho trình quay số, hãy sử dụng bố cục XML tùy chỉnh của bạn.

ArrayAdapter<CharSequence> qual_adapter = ArrayAdapter.createFromResource(this, R.array.professional_qualification_array,R.layout.spnr_qualification); 

qual_adapter.setDropDownViewResource(R.layout.drpdn_qual); 

spnQualification.setAdapter(qual_adapter) 
0

Điều gì làm việc cho tôi là bạn sẽ thiết lập trình quay tròn với danh sách các mục bao gồm gợi ý ngay từ đầu.

final MaterialSpinner spinner = (MaterialSpinner) findViewById(R.id.spinner); 

    spinner.setItems("Select something in this list", getString(R.string.ABC), getString(R.string.ERD), getString(R.string.KGD), getString(R.string.DFK), getString(R.string.TOE)); 

Bây giờ khi người dùng thực sự lựa chọn một cái gì đó trong danh sách, bạn sẽ sử dụng phương pháp spinner.setItems để thiết lập danh sách để tất cả mọi thứ bên cạnh gợi ý của bạn:

 spinner.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener<String>() { 

      @Override public void onItemSelected(MaterialSpinner view, int position, long id, String item) { 
       spinner.setItems(getString(R.string.ABC), getString(R.string.ERD), getString(R.string.KGD), getString(R.string.DFK), getString(R.string.TOE)); 

} 

Các gợi ý sẽ được loại bỏ càng sớm khi người dùng chọn thứ gì đó trong danh sách.

Các vấn đề liên quan