2016-12-05 7 views
2

dialogにはspinnerが含まれています。エミュレータでアプリケーションを実行するとすべて正常に動作しますが、デバイス上で実行すると、spinnerのテキストは白くなり、クリックされた背景は暗くなります。私はなぜそれを解決するのか理解できない。テキストはもう読み込めないので、これは非常に面倒です。Android:デバイスにインストールすると、スピナーの背景が暗くなります。

すでに私のアプリの他の場所にspinnersを実装していて、すべて正常に動作します。この問題はspinnerdialogにある場合にのみ発生します。ここで

は私dialogのコードです:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
// Add the buttons 
builder.setPositiveButton(R.string.ok, new MyOnClickListener(itemInfo)); 
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
    } 
}); 
builder.setMessage(R.string.dialog_message).setTitle(R.string.dialog_title); 


//Create spinner 
ArrayList<String> listForSpinner = (ArrayList) currentUser.getListNames(); 
String[] spinnerList = listForSpinner.toArray(new String[listForSpinner.size()]); 

final ArrayAdapter<String> adp = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, spinnerList); 
adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

spinner = new Spinner(getApplicationContext()); 
spinner.setAdapter(adp); 
spinner.setPadding(50, 50, 50, 0); 
spinner.setPopupBackgroundResource(R.color.white); //test that wasn't successful 

builder.setView(spinner); 
AlertDialog dialog = builder.create(); 
dialog.show(); 

はどうもありがとうございました!

答えて

3

私がやりましたこの問題を解決するには、カスタムレイアウトを作成する必要があります。 2つのレイアウトファイル

final ArrayAdapter<String> adp = new ArrayAdapter<>(getApplicationContext(), R.layout.dialog_spinner_item, spinnerList); 
adp.setDropDownViewResource(R.layout.dialog_spinner_dropdown_item); 

そして作成:

dialog_spinner_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:textColor="@color/black" 
android:background="@color/white" 
android:textSize="@dimen/text_size_title_text_view"> 
</TextView> 

dialog_spinner_dropdown_item.xml

は、私は私のコードで2行を変更しました
<?xml version="1.0" encoding="utf-8"?> 
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1" 
style="?android:attr/spinnerDropDownItemStyle" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:textColor="@color/black" 
android:background="@color/white" 
</CheckedTextView> 
0

あなたは

<style name="SpinnerTheme" parent="Theme.AppCompat.Light"> 
    <item name="colorAccent">@color/bb_inActiveBottomBarItemColor</item> 
    <item name="android:textColorPrimary">#ffffff</item> 
    <item name="colorPrimary">@color/active_tab_icon</item> 
    <item name="colorPrimaryDark">@color/active_tab_icon</item> 

    <item name="android:background">@color/mb_blue</item> 
</style> 

その後のstyles.xmlに独自のスタイルを定義することで、背景を変更することができ、あなたのlayout.xmlであなたのスピナーにカスタムスタイルを設定します。

<Spinner 
      style="@style/SpinnerTheme" 
      android:layout_width="match_parent" 
      android:layout_height="70dp" 
      android:id="@+id/mySpinner" 
      /> 
+0

私はカスタムダイアログを作成しなかったので、残念ながらxmlレイアウトファイルがありません。しかし、他の解決策がない場合は、私はそれを行います。あなたの答えをありがとう – Matteo

関連する問題