Android: форматирование шрифта в диалоговом окне предупреждений

у меня два вопроса

1) Кто-нибудь знает, как применить стили или форматирование к диалоговому окну предупреждения. В настоящее время я использую Builder builder = new AlertDialog.Builder(this); и использую метод setMessage() для установки содержимого.

2) Также я хотел бы знать, как изменить цвет ссылок, созданных linkify. Мне не нужен синий цвет по умолчанию.


person Vivek    schedule 27.12.2010    source источник


Ответы (2)


Q1. Вы должны раздуть или настроить и создать стиль и применить его к AlertDialog.

Вот как вы раздуваете макет и применяете его к AlertDialog.

LayoutInflater li = LayoutInflater.from(ctx);
View view = li.inflate(R.layout.formatted_dialog, null);

AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setTitle("Formatted");
builder.setView(view);

определите все форматирование и стили, необходимые для указанного макета.

Вы можете получить доступ к определенному текстовому представлению, определенному в макете, используя раздутый вид, т.е.

LayoutInflater li = LayoutInflater.from(ctx);
View view = li.inflate(R.layout.formatted_dialog, null);
TextView label=(TextView)view.findViewById(R.id.i_am_from_formatted_layout_lable);

Q2. android:textColorLink="#FF00FF" можно использовать для указания цвета ссылки.

ИЗМЕНИТЬ:

Пример макета сохранен как res/layout/link.xml:

<?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="fill_parent">

  <TextView
   android:id="@+id/text"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="http://www.google.com"
   android:autoLink="web"
   android:textColorLink="#FF00FF"
  />

</LinearLayout>

В вашем onCreate() или где или когда вы хотите вызвать AlertDialog

LayoutInflater li = LayoutInflater.from(this);
View view = li.inflate(R.layout.link, null);

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Formatted");
builder.setView(view).create().show();
TextView text=(TextView) findViewById(R.id.text);

замените this объектом контекста, если вы вызываете из какого-либо другого метода.

person Shardul    schedule 27.12.2010
comment
У меня есть некоторые сомнения. Каким будет макет formatted_dialog? Тогда как мне добавить свой контент? И где я должен указать android:textColorLink ? - person Vivek; 27.12.2010
comment
можете ли вы сказать мне, как использовать шрифт в AlertDialog - person kamal_tech_view; 18.10.2011
comment
используйте findviewid в своем наборе настроек диалогового окна предупреждений и используйте метод setTypeface - person Shardul; 20.10.2011

вы можете использовать следующий код для изменения шрифта и цвета текста, извлекая TextView из alertDialog по умолчанию:

TextView txtAlertMsg = (TextView)alert.findViewById(android.R.id.message);
txtAlertMsg.setGravity(Gravity.CENTER);
person Anand Tiwari    schedule 19.12.2011
comment
Привет Ананд, я пытался, как ты сказал, но я не могу понять, где я делаю неправильно. Я получил NullPointerException в наборе Gravity... Мой код выглядит следующим образом: AlertDialog.Builder builder=new AlertDialog.Builder(context); строитель.setIcon (0); builder.setTitle(мое название); строитель.setMessage(сообщение); builder.setNeutralButton(Хорошо, ноль); AlertDialog alertDialog=builder.create(); алертдиалог.шоу(); ((TextView)alertDialog.findViewById(android.R.id.title)).setGravity(Gravity.CENTER); ((TextView)alertDialog.findViewById(android.R.id.message)).setGravity(Gravity.CENTER); - person Kalpesh; 31.07.2012