คำถามติดแท็ก android-spinner

สปินเนอร์คือคอนโทรล / วิดเจ็ตที่อนุญาตให้ผู้ใช้เลือกรายการจากกลุ่มเช่นรายการดรอปดาวน์ ...

30
จะสร้าง Android Spinner ด้วยข้อความเริ่มต้น“ Select One” ได้อย่างไร?
ฉันต้องการใช้สปินเนอร์ที่เริ่มต้น (เมื่อผู้ใช้ยังไม่ได้ทำการเลือก) จะแสดงข้อความ "เลือกหนึ่ง" เมื่อผู้ใช้คลิกสปินเนอร์รายการของรายการจะปรากฏขึ้นและผู้ใช้เลือกหนึ่งในตัวเลือก หลังจากที่ผู้ใช้ทำการเลือกรายการที่เลือกจะปรากฏในสปินเนอร์แทน "เลือกหนึ่ง" ฉันมีรหัสต่อไปนี้เพื่อสร้างสปินเนอร์: String[] items = new String[] {"One", "Two", "Three"}; Spinner spinner = (Spinner) findViewById(R.id.mySpinner); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); ด้วยรหัสนี้ในขั้นต้นรายการ "หนึ่ง" จะปรากฏขึ้น ฉันสามารถเพิ่มรายการใหม่ "เลือกหนึ่งรายการ" ลงในรายการ แต่จากนั้น "เลือกหนึ่งรายการ" ก็จะปรากฏในรายการแบบเลื่อนลงเป็นรายการแรกซึ่งไม่ใช่สิ่งที่ฉันต้องการ ฉันจะแก้ไขปัญหานี้ได้อย่างไร

30
วิธีการป้องกัน onItemSelected ไม่ให้ใช้งานสปินเนอร์ที่เพิ่งสร้างใหม่?
ฉันคิดว่าวิธีที่ยอดเยี่ยมกว่านี้ในการแก้ปัญหานี้ แต่ฉันรู้ว่าฉันต้องพลาดบางสิ่งบางอย่าง onItemSelectedไฟของฉันดับลงทันทีโดยไม่มีการโต้ตอบกับผู้ใช้และนี่เป็นพฤติกรรมที่ไม่พึงประสงค์ ฉันต้องการให้ UI รอจนกระทั่งผู้ใช้เลือกบางอย่างก่อนที่จะทำอะไร ฉันได้ลองตั้งค่าฟังในonResume()หวังว่าจะช่วย แต่ก็ไม่ได้ ฉันจะหยุดสิ่งนี้จากการปิดก่อนที่ผู้ใช้จะสามารถควบคุมได้อย่างไร public class CMSHome extends Activity { private Spinner spinner; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Heres my spinner /////////////////////////////////////////// spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.pm_list, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); }; public void onResume() { super.onResume(); …

15
Android Spinner: รับกิจกรรมการเปลี่ยนแปลงรายการที่เลือก
คุณจะตั้งค่าฟังเหตุการณ์สำหรับสปินเนอร์ได้อย่างไรเมื่อรายการที่เลือกเปลี่ยนแปลง โดยพื้นฐานสิ่งที่ฉันพยายามทำคือสิ่งที่คล้ายกับสิ่งนี้: spinner1.onSelectionChange = handleSelectionChange; void handleSelectionChange(Object sender){ //handle event }

13
รับข้อความรายการที่เลือกปินเนอร์?
วิธีรับข้อความของรายการที่เลือกปินเนอร์ ฉันต้องได้รับข้อความในรายการที่เลือกในเครื่องปั่นด้ายของฉันเมื่อฉันคลิกที่ปุ่มบันทึก ฉันต้องการข้อความไม่ใช่ดัชนี


19
Android Spinner: หลีกเลี่ยงการโทร onItemSelected ระหว่างการเริ่มต้น
ฉันสร้างโปรแกรม Android ด้วยและSpinner TextViewฉันต้องการแสดงรายการที่เลือกจากรายการดรอปดาวน์ของสปินเนอร์ใน TextView ฉันใช้งานสปินเนอร์ในonCreateวิธีการดังนั้นเมื่อฉันรันโปรแกรมมันจะแสดงค่าในTextView(ก่อนเลือกรายการจากรายการดรอปดาวน์) ฉันต้องการแสดงค่าใน TextView เฉพาะหลังจากเลือกรายการจากรายการแบบหล่นลง ฉันจะทำสิ่งนี้ได้อย่างไร นี่คือรหัสของฉัน: import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView; public class GPACal01Activity extends Activity implements OnItemSelectedListener { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { …

5
วิธีที่ดีที่สุดในการแสดงตัวบ่งชี้การโหลด / ความคืบหน้า?
วิธีที่ดีที่สุดในการแสดงสปินเนอร์ขณะที่แอพกำลังรอการตอบกลับจากเซิร์ฟเวอร์คืออะไร สามารถทำได้โดยการเขียนโปรแกรมหรือไม่ ดังนั้นฉันไม่ต้องเพิ่ม load spinner ในไฟล์ xml ใช่ไหม

6
วิธีปรับแต่งสปินเนอร์ใน Android
ฉันต้องการที่จะเพิ่มความสูงที่กำหนดเองเพื่อเลื่อนลงของการSpinnerพูด 30dp Spinnerและฉันต้องการที่จะซ่อนวงเวียนของรายการแบบเลื่อนลงของ จนถึงตอนนี้ฉันพยายามใช้สไตล์ต่อไปนี้กับSpinner: <style name="spinner_style"> <item name="android:paddingLeft">0dp</item> <item name="android:dropDownWidth">533dp</item> <item name="android:showDividers">none</item> <item name="android:dividerHeight">0dp</item> <item name="android:popupBackground">@drawable/new_bg</item> <item name="android:dropDownHeight">70dp</item> <item name="android:scrollbarAlwaysDrawVerticalTrack">true</item> <item name="android:dropDownSelector">@android:color/white</item> </style> และรหัสของเครื่องปั่นด้ายของฉันคือ: <Spinner android:id="@+id/pioedittxt5" android:layout_width="543dp" android:layout_height="63dp" android:layout_toRightOf="@+id/piotxt5" android:background="@drawable/spinner" style="@style/spinner_style" android:dropDownVerticalOffset="-53dp" android:spinnerMode="dropdown" android:drawSelectorOnTop="true" android:entries="@array/travelreasons" android:prompt="@string/prompt" /> แต่ดูเหมือนว่าจะไม่มีอะไรทำงาน

6
ฉันมีข้อผิดพลาด: setOnItemClickListener ไม่สามารถใช้กับเครื่องปั่นด้ายมีอะไรผิดปกติ?
กรุณานี่คือรหัสของฉันด้านล่างและฉันกำลังวางข้อความแสดงข้อผิดพลาดด้านล่าง: ฉันกำลังพยายามใช้setOnItemClickListenerกับสปินเนอร์มันได้รับอนุญาตหรือไม่? @Override public void onItemClick(AdapterView<?> arg0, View v, int index, long arg3) { if (quantity[index]=="Meter" ){ s1="Meter"; Toast.makeText(v.getContext(), "convert from meter",Toast.LENGTH_SHORT).show(); } } }); convertto.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg, View v1, int index1, long arg4) { if ((quantity[index1]=="Meter") && (s1.equalsIgnoreCase("Meter"))) { Toast.makeText(v1.getContext(), " to meter",Toast.LENGTH_SHORT).show(); var2=var1; …

7
วิธีตั้งค่าฟอนต์ที่กำหนดเองให้เป็น Spinner text โดยทางโปรแกรม?
ฉันมีไฟล์ฟอนต์ ttf ในโฟลเดอร์ assets ฉันรู้วิธีใช้สำหรับ textviews กับ: Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf"); textview1.setTypeface(externalFont); ฉันได้กำหนดการค้นหาข้อความสปินเนอร์ของฉันในไฟล์ xml ของตัวเอง (เหมือน usuall ใน Android): <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+android:id/text1" style="?android:attr/spinnerItemStyle" android:singleLine="true" android:textColor="#ffffff" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:ellipsize="marquee" /> ฉันไม่สามารถอ้างอิง textview นี้จากโค้ดได้ฉันมักจะได้รับข้อยกเว้นของตัวชี้ที่เป็นโมฆะ เช่นฉันพยายาม: TextView spinner_text=(TextView)findViewById(R.id.text1); spinner_text.setTypeface(externalFont); เป็นไปได้ไหมที่จะเลือกแบบอักษรภายนอกของฉันแม้กระทั่งสำหรับข้อความสปินเนอร์ของฉันที่กำหนดไว้ใน xml ของตัวเอง ขอขอบคุณ. แก้ไขพร้อมคำตอบ: ใช้งานได้: String [] items = new …

10
วิธีเพิ่มฉลากลอยบน Spinner
หลังจากใช้ไลบรารีการสนับสนุนการออกแบบของ Android TextInputLayoutเพื่อวางป้ายลอยไว้เหนือEditTextส่วนประกอบฉันสงสัยว่ามีวิธีเพิ่มป้ายกำกับแบบลอยให้กับSpinnerส่วนประกอบหรือไม่ (ไม่จำเป็นต้องใช้ไลบรารีการออกแบบ) ด้วยเหตุนี้ฉันหมายถึงสิ่งที่คล้ายกับสิ่งที่TextViewวางไว้เหนือSpinner(เห็นได้ชัดว่าไม่มีภาพเคลื่อนไหวเหมือนTextInputLayout) แต่ฉันต้องการให้ขนาดตัวอักษรแบบอักษรและสีตรงกับTextInputLayoutป้ายกำกับลอยของ ตัวอย่างเช่นจะมีลักษณะดังนี้ (ดูป้ายกำกับด้านบนSpinners): ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้จุดมุ่งหมายหลักของฉันคือการมีป้ายกำกับด้านบนSpinnerเช่นเดียวกับในTextInputLayoutขนาดข้อความแบบอักษรสีและระยะห่างระหว่างป้ายกำกับและส่วนประกอบจะเหมือนกัน ในหน้าการออกแบบของ Google เกี่ยวกับช่องข้อความป้ายกำกับแบบลอยมีแผนภาพที่แสดงขนาดของป้ายกำกับที่สัมพันธ์กับส่วนประกอบ แต่ไม่มีการระบุสีหรือขนาดข้อความป้ายกำกับ: ดังนั้นเพื่อสรุปฉันกำลังถามว่า: - หากมีองค์ประกอบพิเศษเพื่อให้บรรลุสิ่งที่ฉันขอหรือมุมมองแบบกำหนดเองที่ฉันสามารถใช้ได้มันจะเป็นอย่างไรและฉันจะใช้มันได้อย่างไร - ถ้าไม่ใช่ขนาดตัวอักษรสีและแบบอักษรของป้ายกำกับแบบลอยคืออะไรเพื่อที่ฉันจะได้วางTextViewด้านบนSpinnerด้วยขนาดเค้าโครงที่แสดงในภาพด้านบน แก้ไข: จากหลักเกณฑ์การออกแบบของ Google สำหรับช่องข้อความมีดังต่อไปนี้สำหรับป้ายกำกับแบบลอย: คำแนะนำและแบบอักษรป้อน: Roboto Regular 16sp Label font: Roboto Regular 12sp Tile height: 72dp Text top and bottom padding: 16dp Text field divider padding: 8dp เช่นเดียวกับภาพที่แสดงด้านบน ดังนั้นตัวอักษรป้ายลอย: Roboto 12sp คุณจึงสามารถใช้ …

2
Android: เติม Spinner จาก Java Code โดยทางโปรแกรม
คุณจะเติมสปินเนอร์จากโค้ดจาวาโดยทางโปรแกรมได้อย่างไร? ฉันมีสปินเนอร์ในเลย์เอาต์ดังนี้: <Spinner android:id="@+id/consultation_deseases" android:layout_width="@dimen/bigSpinnerWidth" android:layout_height="@dimen/bigSpinnerHeight" android:prompt="@string/disease_prompt" /> ด้วยรหัส java ฉันต้องสร้างอะแดปเตอร์และเพิ่มรายการ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.