بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
Problem in dropDownWidth of Spinner
با سلام یه مشکلی هست و آن اینکه یه اسپینر ایجاد کردم و میخوام اون اسپینر وقتی dropDown میشه عرضش کل صفحه را بگیره اما وقتی میزنم که dropDownWidth = match-parent باشه ، کار نمیکنه ، اگر کسی هست که بتواند کمک کنه ممنون میشم .
برای این سوال 2 پاسخ وجود دارد.
مشاهده پاسخ صحیح
پاسخ به سوال
jbRhmNqb
6 سال پیش
+1
0
به جای MATCH_PARRENT باید از getWidth() استفاده کنین
این متد پایین رو یکم چکش کاریش کنین تا اون چیزی که میخواین در بیاد...
private void initializeDropdownWidth() {
final ArrayAdapter<String> adapter = (ArrayAdapter<String>) txtSpinner.getAdapter();
txtSpinner.setAdapter(null);
if (txtSpinner.getVisibility() == VISIBLE) {
for (int x = 0; x < adapter.getCount(); x++) {
TextView text = (TextView) adapter.getView(x, null, null);
text.measure(0, 0);
int width = text.getMeasuredWidth();
if (width > maxDropdownWidth) {
maxDropdownWidth = width;
}
}
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (txtSpinner.getWidth() != 0) {
if (maxDropdownWidth + 150 < txtSpinner.getWidth()) {
txtSpinner.setDropDownWidth(txtSpinner.getWidth() - 150);
txtSpinner.setDropDownHorizontalOffset(txtSpinner.getWidth() / 2 - txtSpinner.getDropDownWidth() / 2);
} else if (maxDropdownWidth > txtSpinner.getWidth()) {
if (maxDropdownWidth + 20 < context.getResources().getDisplayMetrics().widthPixels) {
txtSpinner.setDropDownWidth(maxDropdownWidth + 20);
} else {
txtSpinner.setDropDownWidth(context.getResources().getDisplayMetrics().widthPixels);
}
}
txtSpinner.setDropDownVerticalOffset( -1 * txtSpinner.getHeight());
}
txtSpinner.setAdapter(adapter);
}
}, 200);
}
}
پاسخ به سوال
Amirho707
6 سال پیش
+1
0
پاسخ صحیح
متشکرم بابت پاسخ کدشو میزارم که کسی خواست استفاده کنه ، ممنون
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
Spinner sp_angle;
private int maxDropdownWidth = 1500;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = MainActivity.this;
sp_angle = findViewById(R.id.sp_angle);
final ArrayAdapter<String> adapter = (ArrayAdapter<String>) sp_angle.getAdapter();
sp_angle.setAdapter(null);
if (sp_angle.getVisibility() == VISIBLE) {
for (int x = 0; x < adapter.getCount(); x++) {
TextView text = (TextView) adapter.getView(x, null, null);
text.measure(0, 0);
int width = text.getMeasuredWidth();
if (width > maxDropdownWidth) {
maxDropdownWidth = width;
}
}
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (sp_angle.getWidth() != 0) {
if (maxDropdownWidth + 150 < sp_angle.getWidth()) {
sp_angle.setDropDownWidth(sp_angle.getWidth() - 150);
sp_angle.setDropDownHorizontalOffset(sp_angle.getWidth() / 2 - sp_angle.getDropDownWidth() / 2);
} else if (maxDropdownWidth > sp_angle.getWidth()) {
if (maxDropdownWidth + 20 < context.getResources().getDisplayMetrics().widthPixels) {
sp_angle.setDropDownWidth(maxDropdownWidth + 20);
} else {
sp_angle.setDropDownWidth(context.getResources().getDisplayMetrics().widthPixels);
}
}
sp_angle.setDropDownVerticalOffset( -1 * sp_angle.getHeight());
}
sp_angle.setAdapter(adapter);
}
}, 200);
}
sp_angle.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String text = parent.getItemAtPosition(position).toString();
Toast.makeText(parent.getContext(),text,Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .