Moh*_*ush 107 android android-alertdialog
我使用此命令更改了AlertDialog标题的颜色
alert.setTitle( Html.fromHtml("<font color='#FF7F27'>Set IP Address</font>"));
Run Code Online (Sandbox Code Playgroud)
但我想改变标题下出现的线条的颜色; 我怎样才能做到这一点 ?
注意:我不想使用自定义布局

Dan*_*ith 133
不幸的是,这不是一项特别简单的任务.在我的答案中,我详细介绍了如何ListSeparator通过检查Android使用的父样式,创建新图像以及根据原始图像创建新样式来调整a的颜色.不幸的是,与ListSeparator样式不同,AlertDialog主题是内部的,因此不能作为父样式引用.没有简单的方法来改变那条小蓝线!因此,您需要使用自定义对话框.
如果这不是你的一杯茶...... 不要放弃!我非常不安,没有简单的方法可以做到这一点,所以我在github上设置了一个小项目来制作快速定制的全息式对话框(假设手机支持Holo风格).你可以在这里找到这个项目:https://github.com/danoz73/QustomDialog
它应该很容易从无聊的蓝色到激动人心的橙色!

该项目基本上是使用自定义对话框构建器的示例,在示例中,我创建了一个自定义视图,似乎可以满足您在原始问题中提供的IP地址示例.
使用QustomDialog,为了创建一个基本对话框(标题,消息),标题或分隔符具有所需的不同颜色,您可以使用以下代码:
private String HALLOWEEN_ORANGE = "#FF7F27";
QustomDialogBuilder qustomDialogBuilder = new QustomDialogBuilder(v.getContext()).
setTitle("Set IP Address").
setTitleColor(HALLOWEEN_ORANGE).
setDividerColor(HALLOWEEN_ORANGE).
setMessage("You are now entering the 10th dimension.");
qustomDialogBuilder.show();
Run Code Online (Sandbox Code Playgroud)
并且为了添加自定义布局(例如,添加小IP地址EditText),您可以添加
setCustomView(R.layout.example_ip_address_layout, v.getContext())
Run Code Online (Sandbox Code Playgroud)
使用您设计的布局构建器(可以在github中找到IP示例).我希望这有帮助.非常感谢Joseph Earl和他的回答.
mmr*_*tin 74
分频器颜色:
这是一个hack有点,但它对我来说很好,它没有任何外部库(至少在Android 4.4上).
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.dialog)
.setIcon(R.drawable.ic)
.setMessage(R.string.dialog_msg);
//The tricky part
Dialog d = builder.show();
int dividerId = d.getContext().getResources().getIdentifier("android:id/titleDivider", null, null);
View divider = d.findViewById(dividerId);
divider.setBackgroundColor(getResources().getColor(R.color.my_color));
Run Code Online (Sandbox Code Playgroud)
您可以在alert_dialog.xml文件中找到更多对话框ID .例如.android:id/alertTitle改变标题颜色......
更新:标题颜色
用于更改标题颜色的Hack:
int textViewId = d.getContext().getResources().getIdentifier("android:id/alertTitle", null, null);
TextView tv = (TextView) d.findViewById(textViewId);
tv.setTextColor(getResources().getColor(R.color.my_color));
Run Code Online (Sandbox Code Playgroud)
Mr.*_*ndy 21
检查这对你有用 ...
public void setCustomTitle (View customTitleView)
Run Code Online (Sandbox Code Playgroud)
你从以下链接获得详细信息.
CustomDialog.java
Dialog alert = new Dialog(this);
alert.requestWindowFeature(Window.FEATURE_NO_TITLE);
alert.setContentView(R.layout.title);
TextView msg = (TextView)alert.findViewById(R.id.textView1);
msg.setText("Hello Friends.\nIP address : 111.111.1.111");
alert.show();
Run Code Online (Sandbox Code Playgroud)
title.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set IP address"
android:textColor="#ff0000"
android:textAppearance="?android:attr/textAppearanceLarge" />
<ImageView
android:layout_width="fill_parent"
android:layout_height="2dp"
android:layout_marginTop="5dp"
android:background="#00ff00"
/>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#775500"
android:textAppearance="?android:attr/textAppearanceLarge" />
Run Code Online (Sandbox Code Playgroud)

Jar*_*ler 10
这将设置标题,图标和分隔符的颜色.必须随着任何新的Android版本而改变.
public static void colorAlertDialogTitle(AlertDialog dialog, int color) {
int dividerId = dialog.getContext().getResources().getIdentifier("android:id/titleDivider", null, null);
if (dividerId != 0) {
View divider = dialog.findViewById(dividerId);
divider.setBackgroundColor(color);
}
int textViewId = dialog.getContext().getResources().getIdentifier("android:id/alertTitle", null, null);
if (textViewId != 0) {
TextView tv = (TextView) dialog.findViewById(textViewId);
tv.setTextColor(color);
}
int iconId = dialog.getContext().getResources().getIdentifier("android:id/icon", null, null);
if (iconId != 0) {
ImageView icon = (ImageView) dialog.findViewById(iconId);
icon.setColorFilter(color);
}
}
Run Code Online (Sandbox Code Playgroud)
记得在调用此方法之前调用dialog.show().
通过遵循Dialog源代码,我发现MidWindow通过膨胀dialog_title_holo.xml布局在Class中生成Title .所以我的Id mTitleView是title和分隔符的Id titleDivider.
我们可以title简单地访问Id android.R.id.title.
并获得的标识titleDivider由Resources.getSystem().getIdentifier("titleDivider","id", "android");
我用来改变标题方向和改变颜色的最终代码是:
TextView mTitle = (TextView)findViewById(android.R.id.title);
mTitle.setGravity(Gravity.RIGHT|Gravity.CENTER_VERTICAL);
int x = Resources.getSystem().getIdentifier("titleDivider","id", "android");
View titleDivider = findViewById(x);
titleDivider.setBackgroundColor(getContext().getResources().getColor(R.color.some_color));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130320 次 |
| 最近记录: |