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 във вашия персонализиран диалогов прозорец setview и използвайте метода 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); builder.setIcon(0); builder.setTitle(Моето заглавие); builder.setMessage(msg); builder.setNeutralButton(Добре, нула); AlertDialog alertDialog=builder.create(); alertDialog.show(); ((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