3

AlertDialog とカスタム テーマに問題があります。このように定義された黒と光の2つのテーマがあります

<style name="AppThemeBlack" parent="android:Theme.Black">
...................
</style>

<style name="AppThemeLight" parent="android:Theme.Light">
...................
</style>

好みに応じてテーマを適用するベースアクティビティがあります

public class BaseActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Util.SetTheme(this, Config.getInstance().getUITheme());
        super.onCreate(savedInstanceState);
    }
}

.............................

private static int GetThemeIdByName(String themeName)
{
   if (themeName.equals("AppThemeLight"))
       return R.style.AppThemeLight;
   else if (themeName.equals("AppThemeBlack"))
       return R.style.AppThemeBlack;
   return R.style.AppThemeLight;
}

public static void SetTheme(Context context, String themeName)
{
    int id = GetThemeIdByName(themeName);
    context.setTheme(id);
}

この BaseActivity から継承されたすべてのアクティビティ。したがって、私のテーマはアプリケーションのすべてのアクティビティに適用されました。しかし、AndroidManifest で定義された Light テーマのデフォルトでは、AlertDialog に問題があります。

<application android:theme="@style/AppThemeLight" >

このように AlertDialog を作成します

AlertDialog.Builder dlg = new AlertDialog.Builder(this);
ObjectListAdapter<TPartnerSimple> adapter = new ObjectListAdapter<TPartnerSimple>(this, list);
dlg.setAdapter(adapter, new DialogInterface.OnClickListener(){....});
dlg.show();

このアダプターはアイテムのレイアウトを使用します

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/txtName_ObjectListItem"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="10dp"
        android:paddingLeft="10dp"
        android:paddingTop="10dp"
        android:text="Position 1"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

アプリケーションが白の背景と黒のテキストで表示される明るいテーマのリストを使用する場合。しかし、黒のテーマを適用すると、白い背景と白いテキスト (BlackTheme で定義されている) でリストが表示されるため、アイテムのテキストが表示されません

ダイアログが黒いテーマで定義された白いテキストを使用し、そこで定義された黒い背景を使用しないのはなぜですか? ダイアログの背景を黒に変更して、テーマを使用してアイテムのテキストを表示するにはどうすればよいですか?

4

0 に答える 0