Android如何自定义输入文本对话框?

这篇具有很好参考价值的文章主要介绍了Android如何自定义输入文本对话框?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0.引言

  笔者研究的课题涉及到安卓软件开发,在开发过程中,发现普通的显示消息对话框一般可以调用android自带包实现,而要通过文本框输入交互,则无法轻易实现。在查阅网络资料后,实现了自定义输入文本对话框的功能,本文记录实现自定义输入文本对话框的过程。

1.创建示例工程

  (1)创建TestInputDialog工程
  android 输入对话框,AndroidStudio,android,java,android studio

  (2)生成主程序
  android 输入对话框,AndroidStudio,android,java,android studio

  (3)新建输入文本对话框布局(.xml)和功能(.java)文件
  android 输入对话框,AndroidStudio,android,java,android studio

2.输入文本对话框布局和功能设计

  (1)新建形状文件(myshape.xml)
  android 输入对话框,AndroidStudio,android,java,android studio

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">  
    <!--设置圆角-->  
    <corners android:radius="0dp" />  
    <!--设置边框-->  
    <stroke  
        android:width="0.1dp"  
        android:color="#d7d7db" />  
    <!--设置填充色-->  
    <solid android:color="#f8f8f8" />  
</shape>

  (2)添加对话框样式(themes.xml)
  android 输入对话框,AndroidStudio,android,java,android studio

<style name="CustomInputStyle" parent="@android:style/Theme.Dialog">
    <!--这个说明提示框是否有边框-->  
    <item name="android:windowFrame">@null</item>  
    <!--这个说明提示框是否是浮动的-->  
    <item name="android:windowIsFloating">true</item>  
    <!--这个说明提示框是滞是透明的-->  
    <item name="android:windowIsTranslucent">false</item>  
    <!--这个说明提示框是否有标题-->  
    <item name="android:windowNoTitle">true</item>  
    <!--这个说明提示框的背景颜色是什么-->  
    <item name="android:windowBackground">@drawable/myshape</item>  
    <!--这个说明是否充许对话框的背景变暗。为true则充许变暗-->  
    <item name="android:backgroundDimEnabled">false</item>  
</style>

  (3)新建对话框布局文件(input_dialog.xml)
  android 输入对话框,AndroidStudio,android,java,android studio

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:orientation="vertical">  
  
    <LinearLayout  
        android:layout_width="270dp"  
        android:layout_height="wrap_content"  
        android:orientation="vertical">  
  
        <TextView  
            android:id="@+id/title"  
            android:layout_width="match_parent"  
            android:layout_height="wrap_content"  
            android:layout_marginLeft="15dp"  
            android:layout_marginTop="15dp"  
            android:layout_marginRight="15dp"  
            android:gravity="center_horizontal"  
            android:text="输入对话框"  
            android:textSize="19sp" />  
  
        <EditText  
            android:id="@+id/et_input"  
            android:layout_width="match_parent"  
            android:layout_height="wrap_content"  
            android:layout_marginLeft="15dp"  
            android:layout_marginTop="10dp"  
            android:layout_marginRight="15dp"  
            android:layout_marginBottom="10dp"  
            android:gravity="center_horizontal"  
            android:hint="输入内容"  
            android:lineSpacingExtra="5dp"  
            android:textSize="17sp" />  
  
        <View  
            android:layout_width="match_parent"  
            android:layout_height="1dp"  
            android:background="#DFDFDF" />  
  
        <LinearLayout  
            android:layout_width="match_parent"  
            android:layout_height="44dp"  
            android:orientation="horizontal">  
  
            <Button  
                android:id="@+id/btn_ok"  
                android:layout_width="wrap_content"  
                android:layout_height="match_parent"  
                android:layout_weight="1"  
                android:clickable="true"  
                android:gravity="center"  
                android:text="确认"  
                android:textSize="17sp" />  
  
            <View  
                android:layout_width="1dp"  
                android:layout_height="match_parent"  
                android:background="#DFDFDF" />  
  
            <Button  
                android:id="@+id/btn_cancel"  
                android:layout_width="wrap_content"  
                android:layout_height="match_parent"  
                android:layout_weight="1"  
                android:clickable="true"  
                android:gravity="center"  
                android:text="取消"  
                android:textSize="17sp" />  
  
        </LinearLayout>  
    </LinearLayout>  
</LinearLayout>

  (4)新建对话框功能代码文件(CustomInputDialog.java)
  android 输入对话框,AndroidStudio,android,java,android studio

package com.example.testinputdialog;
  
import android.annotation.SuppressLint;  
import android.app.Dialog;  
import android.content.Context;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.widget.EditText;  
import android.widget.TextView;  
  
import androidx.annotation.NonNull;  
  
public class CustomInputDialog extends Dialog{  
    Context mContext;  
    private TextView btn_ok;  
    private TextView btn_cancel;  
    private TextView title;  
    private EditText editText;  
    public CustomInputDialog(@NonNull Context context) {  
        super(context, R.style.CustomInputStyle);  
        this.mContext = context;  
        initView();  
    }  
    @SuppressLint("MissingInflatedId")  
    public void initView() {  
        View view = LayoutInflater.from(mContext).inflate(R.layout.input_dialog, null);  
        title = (TextView) view.findViewById(R.id.title);  
        editText = (EditText) view.findViewById(R.id.et_input);  
        btn_ok = (TextView) view.findViewById(R.id.btn_ok);  
        btn_cancel = (TextView) view.findViewById(R.id.btn_cancel);  
        super.setContentView(view);  
    }  
    public CustomInputDialog setTile(String s) {  
        title.setText(s);  
        return this;  
    }  
    //获取当前输入框对象  
    public View getEditText() {  
        return editText;  
    }  
    //传递数据给输入框对象  
    public CustomInputDialog setEditText(String s) {  
        editText.setText(s);  
        return this;  
    }  
    //确定键监听器  
    public void setOnSureListener(View.OnClickListener listener) {  
        btn_ok.setOnClickListener(listener);  
    }  
    //取消键监听器  
    public void setOnCanlceListener(View.OnClickListener listener) {  
        btn_cancel.setOnClickListener(listener);  
    }  
}

3.主程序调用输入文本对话框

  (1)主程序布局实现
  android 输入对话框,AndroidStudio,android,java,android studio

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:app="http://schemas.android.com/apk/res-auto"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    tools:context=".MainActivity">  
  
    <TextView  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="点击,显示输入对话框,可显示输入值"  
        android:onClick="showInput"  
        app:layout_constraintBottom_toBottomOf="parent"  
        app:layout_constraintEnd_toEndOf="parent"  
        app:layout_constraintStart_toStartOf="parent"  
        app:layout_constraintTop_toTopOf="parent" />  
  
</androidx.constraintlayout.widget.ConstraintLayout>

  (2)主程序功能实现
  android 输入对话框,AndroidStudio,android,java,android studio

package com.example.testinputdialog;
  
import androidx.appcompat.app.AppCompatActivity;  
  
import android.os.Bundle;  
import android.view.View;  
import android.widget.EditText;  
import android.widget.Toast;  
  
public class MainActivity extends AppCompatActivity {  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
    }  
  
    public void showInput(View view) {  
        final CustomInputDialog customDialog = new CustomInputDialog(this);  
        final EditText editText = (EditText) customDialog.getEditText();//方法在CustomDialog中实现  
        customDialog.setOnSureListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                Toast.makeText(MainActivity.this, "你点击了确定,输入的值为:"+editText.getText().toString(), Toast.LENGTH_SHORT).show();  
                customDialog.dismiss();  
            }  
        });  
        customDialog.setOnCanlceListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                Toast.makeText(MainActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show();  
                customDialog.dismiss();  
            }  
        });  
        customDialog.setTile("请输入内容");  
        customDialog.show();  
    }  
}

  (3)结果展示
  android 输入对话框,AndroidStudio,android,java,android studio

参考资料:
[1] yuan_fang_yan. android自定义普通对话框,输入框对话框; 2017-09-27 [accessed 2023-05-20].
[2] 晓艳考研. android点击按钮弹出输入框,android 弹出框(输入框和选择框); 2021-05-26 [accessed 2023-05-20].
[3] 李易-_-. Android 密码输入框; 2017-11-06 [accessed 2023-05-20].
[4] Android_xiong_st. (原创)安卓自定义shape方法; 2023-03-21 [accessed 2023-05-20].文章来源地址https://www.toymoban.com/news/detail-643208.html

到了这里,关于Android如何自定义输入文本对话框?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt自定义对话框

    自定义框主要通过对现有对话框QDialog类的派生,根据需求编写成员函数、重载信号函数、槽函数,进而实现在主QWidget中点击某个按钮后,一个对话框的弹出 简化创建派生类 最后点击完成即可。 自定义ui界面,编写成员函数等 主窗口触发槽函数编写 这里常有一个固定的格式

    2024年02月13日
    浏览(50)
  • qt学习:QT对话框+颜色+文件+字体+输入

    目录 概述 继承图 QColorDialog 颜色对话框 QFileDialog 文件对话框 保存文件对话框 QFontDialog 字体对话框 QInputDialog 输入对话框 对于对话框的功能,在GUI图形界面开发过程,使用是非常多,那么Qt也提供了丰富的对话框类 QDialog是所有对话框的基类 QWidget  QDialog QColorDialog 颜色对话框

    2024年01月21日
    浏览(68)
  • Qt开发:自定义对话框

    1、添加自定义对话类框。 首先向该项目中添加Qt设计师界面类。界面模板选择 Dialog without Buttons,类名改为MyDialog。然后在设计模式中向窗口添加两个Push Button,并且分别更改其显示文本为“进入主界面”和“退出程序”           这个accept()函数是QDialog类中的一个槽,对于一个

    2024年02月11日
    浏览(47)
  • Qt应用开发(基础篇)——输入对话框 QInputDialog

             QInputDialog 类继承于 QDialog ,是一个简单方便的对话框,用于从用户获取单个值。         对话框窗口 QDialog           QInputDialog输入对话框 带有一个文本标签、一个输入框和标准按钮。输入内容可以字符、数字和选项,文本标签用来告诉用户应该要输入什

    2024年02月10日
    浏览(47)
  • 【QT】自定义对话框及其调用

    目录 1 对话框的不同调用方式 2 对话框QWDialogSize的创建和使用 3 对话框QWDialogHeaders的创建和使用 4 对话框QWDialogLocate的创建与使用 5 利用信号与槽实现交互操作          在一个应用程序设计中,为了实现一些特定的功能,必须设计自定义对话框。自定义对话框 的设计一般

    2024年01月17日
    浏览(47)
  • 【flutter】完全自定义样式模态对话框

     示例完成结果展示:   示例组件代码: context :上下文 title :提示标题,null时不显示 content :提示内容,null时不显示 cancelText :取消按钮文字,null时不显示取消按钮 confirmText :确认按钮文字 页面上使用:

    2024年01月20日
    浏览(43)
  • Android -对话框AlertDialog

    代码直接复制粘贴使用 1.创建一个对话框生成器AlertDialog.Builder对象 2.设置AlertDialog.Builder对象的属性,图标,标题,内容等 3.调用create()方法创建一个对话框AlertDialog 4.调用AlertDialog的show()方法显示对话框 5.调用AlertDialog的dismiss()方法关闭对话框 1.设置对话框的图标 2.设置对话框

    2024年02月02日
    浏览(39)
  • android:提醒对话框AlertDialog

    一、前言:点击按钮出现提示 二、上代码 新建一个活动AlertDialogActivity

    2024年02月12日
    浏览(40)
  • C++ Qt开发:自定义Dialog对话框组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍自定义 Dialog 组件的常用方法及灵活运用。 在之前的文章中笔者已经为大家展示

    2024年02月04日
    浏览(53)
  • Pyside6(3): 自动生成UI的Qt参数输入对话框

    参数输入界面是桌面软件开发最繁琐的部分之一。特别是当系统中存在多种可编辑的数值模型时,由于各个模型的字段不同,每个字段的输入类型也不同,需要制作不同的UI,使用不同的UI控件,无疑会耗费大量时间,同时拓展性也非常差,因为每增加一个数值模型,都需要制

    2024年02月03日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包