2017-09-21 1 views
0

私のアプリケーションにはスピナーを含むダイアログがあります。ダイアログは、全画面領域をカバーするように設計されています。スピナーはダイアログの一部にすぎませんが、スピナーのドロップダウンを選択すると、ドロップダウンは画面全体のスペースをカバーします。ダイアログの参照については、以下の画像を参照してください:画面全体をカバーするスピナードロップダウン

enter image description here

今すぐ下記一度スピナーボタンをクリックし、ドロップダウンは、下の画像のように表示されます。

enter image description here

あなたが見ることができるように、それは私はその幅をスピナーの幅に制限したいので、フルスクリーンをカバーしています。

ダイアログコード:

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; 
} 

}

あなたが他のコードの参照が必要な場合は私に知らせてください。私はこの問題を解決することができません。私を助けてください。前もって感謝します。

+0

デフォルトのドロップダウンレイアウトファイルの代わりにカスタム行ファイルを使用します。カスタム行ファイルはmatch_parentではなくwrap_contentである必要があります。これで問題が解決します。 –

+0

wrap_contentをwidthとしてspinner_row.xmlを試しましたか?または幅がfill_parentでないかどうかを確認してください –

+0

@VinayakB:はい私は試しましたが、とにかく助けてくれません。ドロップダウンはまだ全画面をカバーしています –

答えて

0
/Just remove the below lines of code/ 

      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); 
+0

その部分は、ダイアログのためのもので、スピナーのものではありません。 –

+0

@AnimeshJena Buddyダイアログがフルスクリーンで表示されたら、自動的にスピナーが全体の幅をカバーします。だから、自動的にあなたのスピナーの問題を解決するalertdialogの幅を変更してください – yash786

+0

私のダイアログは、スピナーのドロップとしてどこに画面全体を埋める必要があります。それは要件です。私はちょうどあなたのスピナーの幅としてドロップダウンの幅を制限したい –

関連する問題