Android开发:利用Activity的Dialog风格完成弹出框设计
在我们使用Dialog时,如果需要用到很多自己设计的控件,虽然可以让弹出框显示出我们需要的界面,但却无法找到地方完成控制代码的编写,如何解决这个问题呢,我们可以将Activity伪装成Dialog弹出框,这样即显示了界面,在Activity里写控制代码也是大家的拿手好戏了,现在我就来抛砖引玉说说简单的实现吧。
首先,问题的关键在MainActivity里的一句 Android:theme="@android:style/Theme.Dialog",这就是Activity的Dialog风格。
我们先创建一个main.xml,内容如下
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:id="@+id/showString"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="在这里显示dialog里输入的数字:"
- />
- <Button
- android:id="@+id/openButton"
- android:text="点此打开Dialog"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- </LinearLayout>
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <EditText
- android:id="@+id/et"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- <Button
- android:id="@+id/returnButton"
- android:text="请输入字符"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- </LinearLayout>
- 现在在MainActivity里写下如下代码,都是很基本的代码,相信大家都能看懂public class MainActivity extends Activity {
- private Button openButton;
- private TextView showString;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- openButton = (Button)findViewById(R.id.openButton);
- showString = (TextView)findViewById(R.id.showString);
- openButton.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- //这里用到了返回试Activity的基本用法,因为和主题无关,就不多解释了
- Intent i = new Intent(MainActivity.this, testDialog.class);
- startActivityForResult(i, 0);
- }
- });
- }
- //利用返回试Activity接收输入的数据并显示,证明我们的Dialog式的Activity确实可以完成数据的处理
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- //取出字符串
- Bundle bundle = data.getExtras();
- String str = bundle.getString("str");
- showString.setText(str);
- }
- }
- ublic class testDialog extends Activity{
- private Button returnButton;
- private EditText inputEditor;
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.textdialog);
- returnButton = (Button)findViewById(R.id.returnButton);
- inputEditor = (EditText)findViewById(R.id.et);
- //和前面一样,只是用到了返回式Activity的基本方法,虽然这里已经是个Dialog了,但却和普通Activity无异
- returnButton.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- String input = inputEditor.getText().toString();
- Intent i = new Intent(testDialog.this, MainActivity.class);
- Bundle b = new Bundle();
- b.putString("str", input);
- i.putExtras(b);
- testDialog.this.setResult(RESULT_OK, i);
- testDialog.this.finish();
- }
- });
- }
- }
- <activity android:name=".testDialog"
- android:label="这是一个Activity变成的Dialog"
- android:theme="@android:style/Theme.Dialog"
- ></activity>
好了,你可以运行一下了,如果正常,你将看到和我一样的结果
相关推荐
graseed 2020-10-28
zbkyumlei 2020-10-12
jinhao 2020-09-07
淡风wisdon大大 2020-06-06
yoohsummer 2020-06-01
baike 2020-05-19
hxmilyy 2020-05-11
小灰笔记 2020-03-16
jaybeat 2020-03-13
yinren 2020-03-11
86477414 2020-03-07
小飞侠V 2020-03-05
IT之家 2020-03-11
SXIAOYI 2020-09-16
impress 2020-08-26
liuqipao 2020-07-07
chenjia00 2020-05-29
扭来不叫牛奶 2020-05-08
黎豆子 2020-05-07