Dialog(八)——改变系统自带Dialog字体大小(ContextThemeWrapper)

简介: MainActivity如下:package c.c.testdialog;import android.app.Activity;import android.
MainActivity如下:
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>


相关文章
|
6月前
alert Dialog设置 button颜色 圆角
alert Dialog设置 button颜色 圆角
49 0
|
6月前
|
XML Java Android开发
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
648 1
|
6月前
element-plus:el-Dialog对话框组件垂直居中、禁止屏幕滚动、使用内滚动
element-plus:el-Dialog对话框组件垂直居中、禁止屏幕滚动、使用内滚动
element-ui框架的el-dialog弹出框被遮罩层挡住了/el-drawer....会生成v-model元素的组件被遮罩层挡住
element-ui框架的el-dialog弹出框被遮罩层挡住了/el-drawer....会生成v-model元素的组件被遮罩层挡住
400 1
element-ui框架的el-dialog弹出框被遮罩层挡住了
element-ui框架的el-dialog弹出框被遮罩层挡住了
334 0
element-ui框架的el-dialog弹出框被遮罩层挡住了
Dialog和DialogFragment 设置背景透明
Dialog和DialogFragment 设置背景透明
1013 0
|
XML Android开发 数据格式
Android AlertDialog修改标题、内容、按钮的字体大小和字体颜色
Android AlertDialog修改标题、内容、按钮的字体大小和字体颜色
901 0
Android AlertDialog修改标题、内容、按钮的字体大小和字体颜色
toolbar改变返回按钮方法
toolbar改变返回按钮方法
173 0
|
Windows
自定义Window标题栏titleBar
自定义Window标题栏titleBar
372 0
自定义Window标题栏titleBar
|
Java API Android开发
android 设置系统dialog 样式
android 设置系统dialog 样式