بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

کمک فوری نیاز دارم! تغییر عرض منوی dropdown در spinner

مدیریت گفتگو
شیخی 9 سال پیش
آخرین تغییر: 9 سال پیش

لینک دانلود پروژه

سلام. دوستان من میخوام اندازه عرض منوی dropdown برای اسپینر کوچیک بشه به اندازه محتویاتش اما نتونستم
لطفا راهنمایی کنید

نظرات

Reza 9 سال پیش
سلام ، خب عرضش رو wrap_content بذار .
شیخی 9 سال پیش
گذاشتم اما تغییری نکرد

پاسخ‌ها 2

مهدی 9 سال پیش

به اسپینر یه style دادی، فایل style رو باز کن و این کد رو بزار ببین حل میشه

 <item name="android:layout_weight=">wrap_content</item>

نظرات

شیخی 9 سال پیش
سلام. ممنون وقت گذاشتید. اما درست نشد. البته کد شما رو به این صورت wrap_content هم تغییر دادم اما بازهم جواب نداد.
شیخی 9 سال پیش
کد کامل نیومد؛ منظورم این بود که weight رو در کد شما به width هم تغییر دادم اما درست نشد

سلام

من هم همین مشکل را داشتم، با این کد حل شد. امیدوارم  مشکل شما هم حل بشه. البته من چون تعداد spinnerهام زیاد بود تابع تعریف کردم. قسمت آخ که توی try-catch هست مربوط به ارتفاعه.

 private void spinner_black(Spinner spinner, List<String> spinner_items) {

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinner_items) {

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView textView = (TextView) view.findViewById(android.R.id.text1);
textView.setTextColor(Color.rgb(0, 0, 0));
//textView.setTextSize(12);
//textView.setTypeface(face);
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, G.font_size1);
return view;
}


@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
View v = super.getDropDownView(position, convertView, parent);
v.setBackgroundColor(Color.rgb(255, 255, 255));
((TextView) v).setTextSize(TypedValue.COMPLEX_UNIT_SP, G.font_size1);
((TextView) v).setTextColor(Color.rgb(64, 189, 232));
((TextView) v).setPadding(35, 10, 5, 10);
return v;
}
};

dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
spinner.setAdapter(dataAdapter);
try {
Field popup = Spinner.class.getDeclaredField("mPopup");
popup.setAccessible(true);

// Get private mPopup member variable and try cast to ListPopupWindow
android.widget.ListPopupWindow popupWindow = (android.widget.ListPopupWindow) popup.get(spinner);

// Set popupWindow height to 500px
popupWindow.setHeight(500);
}
catch (NoClassDefFoundError | ClassCastException | NoSuchFieldException | IllegalAccessException e) {
// silently fail...
}
}

نظرات

ببخشید، من برای ارتفاع نوشتم. برای عرض هم یه لایه ایجاد کن به همون عرضی که میخوای و بعد spinner را توش بذار با عرض match_parent. من اینجوری هر عرضی خواستم به spinner دادم، مشکلی هم نداشت.
شیخی 9 سال پیش
سلام. ممنون وقت گذاشتید و جواب دادید من خط آخر try رو به width تغییر دادم اما باز هم عرض پنجره popup تغییر نکرد منظور شما رو از قرار دادن اسپینر در لایه متوجه نشدم. با عرض خود اسپینر مشکلی ندارم؛ میخوام عرض پنجره ی لیست کم بشه
شیخی 9 سال پیش
البته من یه تغییر ایجاد کرده بودم که فکر میکنم ایراد کارم از همونجاست در کد شما این خط رو نمیشناسه: ListPopupWindow در تعریف popupWindow باید چکار کنم؟

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .