我在android API 10的对话框中遇到自定义视图的问题。
我使用AlertDialog.Builder
构建对话框。我在构建器上使用setView
命令包含一个自定义视图面板。
这适用于我测试过的大多数API。样式在不同设备之间有所变化,但这就是我想要的,因为样式与设备默认匹配。
我的问题是,在API 10上,我的自定义视图中的任何文本在黑色背景上显示为黑色。
我使用AlertDialog.Builder.setMessage()
插入的任何文字都会正确显示。
对话框构建器用于确定文本外观的神奇属性/样式是什么?
我的应用主题是Theme.AppCompat.Light
。
这是我的onCreateDialog方法:
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = getActivity().getLayoutInflater();
final View view = inflater.inflate(R.layout.fragment_status_dialog, null);
mStatusTextView = (TextView) view.findViewById(R.id.text_status);
mConnectedDeviceTextView = (TextView) view.findViewById(R.id.text_connected_device);
MainService.ServiceState state = null;
if (getArguments().containsKey(SERVICE_STATUS_ARG_KEY)) {
state = (MainService.ServiceState) getArguments().getSerializable(SERVICE_STATUS_ARG_KEY);
}
setState(state);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(view);
builder.setMessage("This will show up just fine.");
builder.setTitle(getString(R.string.status_title));
builder.setNegativeButton(R.string.dialog_back_button_text, null);
builder.setNeutralButton(R.string.dialog_connect_to_text, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mListener.onDialogConnectTo();
}
});
// Create the AlertDialog object and return it
return builder.create();
}
这是我的fragment_status_dialog布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="18dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/status_starting"
android:id="@+id/text_status"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/status_connected_to_unknown"
android:paddingStart="4dp"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:id="@+id/text_connected_device"
android:layout_toRightOf="@+id/text_status"
android:layout_toEndOf="@+id/text_status"/>
</RelativeLayout>
注意,我已经尝试了https://stackoverflow.com/a/24505312/2350083,但它没有解决它。
答案 0 :(得分:2)
尝试拨打AlertDialog#setInverseBackgroundForced(true)
。
答案 1 :(得分:0)
如何简单地设置文本的颜色?例如:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/white"
android:text="@string/status_starting"
android:id="@+id/text_status"/>
TextView使用设备(或应用程序)的默认文本颜色。如果将颜色专门设置为TextView,则无论API如何,它都将在设备上覆盖。