您的位置:首页 > 移动开发 > Android开发

android 学习笔记10-对话框 主题样式 国际化

2017-01-10 23:28 453 查看
1、确定取消对话框

具体的步骤:
a,创建对话框构建器对象,类似工厂模式
AlertDialog.Builder builder = new Builder(this);//this是一个上下文Context ,查看源码可知
b,设置标题和正文
builder.setTitle("警告");
builder.setMessage("对话框内容");
c,设置确定和取消按钮
builder.setPositiveButton("确定", new OnClickListener() {//注意这个侦听是dialog包下的,不要导错了
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "已经确定", 0).show();
}
});

builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "已经取消", 0).show();
}
});
d,使用构建器创建出对话框对象
AlertDialog ad = builder.create();
ad.show();

代码演示:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void click1(View v){
//创建对话框创建器
AlertDialog.Builder builder = new Builder(this);
//设置图标
builder.setIcon(android.R.drawable.ic_dialog_alert);
//设置标题
builder.setTitle("警告");
//设置内容
builder.setMessage("对话框内容");

//设置确定按钮
builder.setPositiveButton("确定", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "已经确定", 0).show();

}
});
//设置取消按钮
builder.setNegativeButton("取消", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "已经取消", 0).show();
}
});

//显示对话框
AlertDialog ad = builder.create();
ad.show();
}
}
这样就OK了


2、单选对话框

public void click2(View v){

//创建对话框创建器

AlertDialog.Builder builder = new Builder(this);

//设置图标

builder.setIcon(android.R.drawable.ic_dialog_alert);

//设置标题

builder.setTitle(“选择职业”);

final String[] items = new String[]{
"老师",
"程序员",
"客服",
};

//设置单选选项
builder.setSingleChoiceItems(items, 1, new OnClickListener() {

//dialog:触发此方法执行的那个对话框
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, items[which], 0).show();
//对话框消失
dialog.dismiss();
}
});
//显示对话框
builder.show();
}
注意:不要设置 builder.setMessage("对话框内容");  不然会覆盖


3、多选对话框

void click3(View v){

//创建对话框创建器

AlertDialog.Builder builder = new Builder(this);

//设置图标

builder.setIcon(android.R.drawable.ic_dialog_alert);

//设置标题

builder.setTitle(“选择职业”);

final String[] items = new String[]{
"老师",
"程序员",
"客服",
};

final boolean[] checkedItems = new boolean[]{
true,
false,
true
};

//设置多选选项
builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() {

@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
//记录用户的选择
checkedItems[which] = isChecked;
}
});
builder.setPositiveButton("确定", new OnClickListener() {//点击确定对话框就会消失,不用去dialog.dismiss();

@Override
public void onClick(DialogInterface dialog, int which) {
String text = "";
for (int i = 0; i < checkedItems.length; i++) {
text += checkedItems[i]? items[i] + ",": "";//三步运算符
}
Toast.makeText(MainActivity.this, text, 0).show();

}
});

builder.show();
}


4、进度条对话框

public void click4(View v){

//创建进度条对话框

final ProgressDialog dialog = new ProgressDialog(this);

dialog.setIcon(android.R.drawable.ic_input_add);

dialog.setTitle(“正处理,请稍候…”);

dialog.setMax(100);

dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

Thread t = new Thread(){

public void run() {

for (int i = 0; i <= 100; i++) {

dialog.setProgress(i);

try {

sleep(30);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

//完成,进度消失

dialog.dismiss();

}

};

t.start();//开启一个子线程

dialog.show();//显示dialog

}

5、样式与主题

为什么设置样式,因为如果多个地方使用同一个设置的话,如果修改那么都需要修改,如果定义了样式的话,那么就只需要修改一个地方。

在style.xml文件中定义
<style name="basestyle">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textSize">30sp</item>
<item name="android:textColor">#00ff00</item>
</style>

样式还可以继承,比如我只想改变basestyle中的某一个属性,我就可以继承它,2种写法:
a,使用parent
<style name="style1" parent="basestyle">
<item name="android:textSize">20sp</item>
</style>
b,使用.  这种写法会多一点
<style name="basestyle.style2">
<item name="android:textColor">#ff0000</item>
</style>

使用的话我们直接去引用就行了,例如:
这个只需要设置文本的内容就行了
<TextView
android:text="@string/hello_world"
style="@style/basestyle"
/>
<TextView
android:text="@string/hello_world"
style="@style/style1"
/>
<TextView
android:text="@string/hello_world"
style="@style/style2"
/>

主题的设置和样式一模一样,主题用于Activity


6、国际化

就比如想应用中的字体随着系统语言的设置而改变,就需要设置国际化

如果我们在xml知直接定义的话,会提示一个IN18警告,因为国际化需要在string.xml中定义

具体的步骤:

在res文件夹中复制value,将里面的string.xml定义多份

value-zh 里面放中文

value-en 里面放英文



这样你的应用中的语言就会随着系统语言的改变而改变

定义图片的时候,android:src设置图片的路径
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/flag"
android:layout_centerInParent="true"
/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: