私のアプリケーションにはスピナーを含むダイアログがあります。ダイアログは、全画面領域をカバーするように設計されています。スピナーはダイアログの一部にすぎませんが、スピナーのドロップダウンを選択すると、ドロップダウンは画面全体のスペースをカバーします。ダイアログの参照については、以下の画像を参照してください:画面全体をカバーするスピナードロップダウン
今すぐ下記一度スピナーボタンをクリックし、ドロップダウンは、下の画像のように表示されます。
あなたが見ることができるように、それは私はその幅をスピナーの幅に制限したいので、フルスクリーンをカバーしています。
ダイアログコード:
final Dialog dlg_dialog = new Dialog(myContext, R.style.Theme_Dialog);
// dialog.setCancelable(false);
dlg_dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
Window window = dlg_dialog.getWindow();
if (window == null) return;
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dlg_dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.FILL_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
lp.gravity = Gravity.CENTER;
dlg_dialog.getWindow().setAttributes(lp);
//dialog.setContentView(R.layout.new_field_quote_entry_dialog);
dlg_dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dlg_dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
dlg_dialog.setContentView(R.layout.new_field_quote_entry_dialog);
// final Spinner spnr_spinnerSelectMarket = (Spinner)dlg_dialog.findViewById(R.id.spinnerSelectMarket);
TextView txtv_selectCompetitorDropDown = (TextView) dlg_dialog.findViewById(R.id.spinnerSelectCompetitorDropDown);
final Spinner spnr_spinnerSelectCompetitor = (Spinner) dlg_dialog.findViewById(R.id.spinnerSelectCompetitor);
spnr_spinnerSelectCompetitor.setClickable(false);
spnr_spinnerSelectCompetitor.setEnabled(false);
style.Dialog:ドロップダウンを示すために、以下のコードが使用されている今、
<style name="Theme_Dialog" parent="android:Theme.Dialog">
<item name="android:windowMinWidthMajor">100%</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowMinWidthMinor">100%</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowIsFloating">false</item>
:
私はスピナーのための私のコードを掲示しています下にCustomSpinnerAdapter customSpinnerAdapterCompetitor = new CustomSpinnerAdapter(myContext,
R.layout.spinner_row, alst_competitor, "Select Competitor");
competitor_spinner.setAdapter(customSpinnerAdapterCompetitor);
CustomSpinnerAdapterの場合:
public class CustomSpinnerAdapter extends ArrayAdapter<String> {
Context context;
ArrayList<String> objects;
String firstElement;
boolean isFirstTime;
public CustomSpinnerAdapter(Context context, int textViewResourceId, ArrayList<String> objects, String defaultText) {
super(context, textViewResourceId, objects);
this.context = context;
this.objects = objects;
this.isFirstTime = true;
setDefaultText(defaultText);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if(isFirstTime) {
objects.set(0, firstElement);
isFirstTime = false;
}
return getCustomDropdownView(position, convertView, parent);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
notifyDataSetChanged();
return getCustomView(position, convertView, parent);
}
public void setDefaultText(String defaultText) {
this.firstElement = objects.get(0);
objects.set(0,defaultText);
}
public View getCustomView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.spinner_row, parent, false);
TextView label = (TextView) row.findViewById(R.id.spinnerText);
label.setText(objects.get(position));
return row;
}
public View getCustomDropdownView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.simple_spinner_dropdown_item, parent, false);
CheckedTextView label = (CheckedTextView) row.findViewById(R.id.text1);
label.setText(objects.get(position));
return row;
}
}
あなたが他のコードの参照が必要な場合は私に知らせてください。私はこの問題を解決することができません。私を助けてください。前もって感謝します。
デフォルトのドロップダウンレイアウトファイルの代わりにカスタム行ファイルを使用します。カスタム行ファイルはmatch_parentではなくwrap_contentである必要があります。これで問題が解決します。 –
wrap_contentをwidthとしてspinner_row.xmlを試しましたか?または幅がfill_parentでないかどうかを確認してください –
@VinayakB:はい私は試しましたが、とにかく助けてくれません。ドロップダウンはまだ全画面をカバーしています –