MainActivity如下:
styles.xml如下:
package c.c.testdialog;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.ContextThemeWrapper;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
* Demo描述:
* 改变系统对话框中的字体大小
* 方法:
* 0 将一个style的parent设置为@android:style/Theme.Dialog
* 修改其中的 <item name="android:textSize">30sp</item>
* 这种方式很类似于子类覆盖父类方法
* 1 利用context和该style生成ContextThemeWrapper
* 2 利用ContextThemeWrapper生产Builder对象
*/
public class MainActivity extends Activity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
private void init(){
mButton=(Button) findViewById(R.id.button);
mButton.setOnClickListener(new ClickListenerImpl());
}
private class ClickListenerImpl implements OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
// 弹出自定义对话框
showDialog();
break;
default:
break;
}
}
}
private void showDialog(){
Dialog dialog = null;
ContextThemeWrapper contextThemeWrapper =
new ContextThemeWrapper(MainActivity.this, R.style.dialog);
Builder builder = new AlertDialog.Builder(contextThemeWrapper);
builder.setItems(R.array.share_array,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
System.out.println("----->发送邮件");
break;
case 1:
System.out.println("----->分享到FaceBook");
break;
case 2:
System.out.println("----->分享到Twitter");
break;
default:
break;
}
}
});
dialog = builder.create();
dialog.show();
}
}
arrays.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="share_array">
<item>发送邮件</item>
<item>分享到FaceBook</item>
<item>分享到Twitter</item>
</string-array>
</resources>
styles.xml如下:
<resources>
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme"></style>
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:textSize">30sp</item>
</style>
</resources>