精华内容
下载资源
问答
  • 下列控件中
    千次阅读
    2021-06-13 11:26:05

    下面关于表单控件基本操作的陈述中,哪个是正确的

    下面关于表单控件基本操作的陈述中,哪个是正确的 搜索资料 我来答 分享 微信扫一扫 网络繁忙请稍后重试 新浪微博 QQ空间 举报 浏览14 次 本地图片 图片

    表单控件名是什么?是caption还是name?还有表单标题和表单文件名又是什么? 急埃。。明天表单控件名NAME,表单标题caption,表单文件名是保存的表单名。 在图形用户界面(GUI)中屏幕上的一种对象,用户可操作该对象来执行对表单设计,修改等操作。 在html中用来表达。 例如: 表现出来就是一个按钮。

    589aa9262ccd733f2d555445437ceb4e.png

    以下表单控件中,不是由 INPUT 标记符创建的为(___(A)单选框 (B)口令框 (C)选项菜单 (D)提交按钮

    只有选项菜单不是input标记创建的,而是select标签创建的。 red blue 你是在做作业吧。。。

    表单构成中的表单控件、提示信息和表单域是什么?

    好像是命名属性的意思,方便其他html语句调用。

    怎么更改excel表单控件的字体大小打开“属性”窗口,在上面选择你的控件,在下面找到“Font”,按右边的按钮,在打开的“字体”窗口中设置。

    更多相关内容
  • Visio studio中控件添加出现“下列控件已成功添加到工具箱,但未在活动设计器启用”的解决方案: !注意电脑.net版本 !保证下载的控件为最新版本 !dll添加顺序及引用不可少 !!!dll添加完整,负责部分功能...

    Visio studio中控件添加出现“下列控件已成功添加到工具箱中,但未在活动设计器中启用”的解决方案:
    !注意电脑中.net版本
    !保证下载的控件为最新版本
    !dll添加顺序及引用不可少
    !!!dll添加完整,负责部分功能缺失或不可用

    以ZedGraph为例:
    我在安装过程中先后出现了好几次未在活动设计器启用,在网上查询之后,发现网上相关解决方案很少,没有具体操作步骤。
    在这里插入图片描述
    现在用正确的添加步骤演示一下:
    1.在工具箱右键——选择项
    在这里插入图片描述
    2.选择.NET framework——浏览(右下角)——ZedGraph.dll和ZedGraph.Web.dll(找到自己提前下载下来的dll文件)——添加
    工具箱出现控件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    3.添加引用
    在解决方案资源管理器中选择引用右键——添加引用——找到ZedGraph.dll和ZedGraph.Web.dll——添加
    在这里插入图片描述

    4.使用控件
    在窗口中添加ZedGraph控件,查看代码,引用控件
    在这里插入图片描述

    5.在代码中检测控件属性是否可用,完成添加
    在这里插入图片描述
    整个过程,首先添加ZedGraph.dll控件,然后添加ZedGraph.dll和ZedGraph.Web.dll两个引用。

    展开全文
  • 文章目录LinearLayout :线性布局android:layout_gravity :控件的对齐方式android:layout_weight:权重 LinearLayout :线性布局 线性布局有水平、垂直两种排列方式: android:orientation="vertical" :垂直方向...


    LinearLayout :线性布局

    线性布局有水平、垂直两种排列方式:

    • android:orientation="vertical" :垂直方向排列,此时高度不可被指定为 match_parent
    • android:orientation="horizontal":水平方向排列,此时不能将宽度指定为 match_parent

    android:layout_gravity :控件的对齐方式

    如果布局方式选择 horizontal,之后设置 button1topbutton2center_verticalbutton3bottom 。那么呈现效果如下:
    在这里插入图片描述


    android:layout_weight:权重

    vertical 垂直布局时,layout_weight 可以覆盖 layout_height 属性,根据权重来分配控件高度
    在这里插入图片描述
    PS:通过上图应该对 android:orientation="vertical" :垂直方向排列,此时高度不可被指定为 match_parent。” 这句话有了深刻了解, match_parent 属性会导致控件占满整个屏幕……

    horizontal 水平布局时,layout_weight 可以覆盖 layout_height 属性,根据权重来分配控件高度

    在这里插入图片描述


    RelativeLayout :相对布局

    通过相对定位的方式可以使控件出现在布局的任何位置。

    相对于父布局进行定位

    在这里插入图片描述
    关于位置的属性:

    • layout_alignParentLeft :处于父布局的左。
    • layout_alignParentTop :处于父布局的上。
    • layout_alignParentRight : 处于父布局的右。
    • layout_alignParentBottom :处于父布局的下。
    • layout_centerInParent :处于父布局的居中。

    相对于控件进行定位

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".SecondActivity">
    
        <Button
            android:id="@+id/button_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@id/button_3"
            android:layout_toLeftOf="@id/button_3"
            android:text="Button 1"/>
    
        <Button
            android:id="@+id/button_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@id/button_3"
            android:layout_toRightOf="@id/button_3"
            android:text="Button 2"/>
    
        <Button
            android:id="@+id/button_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="Button 3"/>
    
        <Button
            android:id="@+id/button_4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/button_3"
            android:layout_toLeftOf="@id/button_3"
            android:text="Button 4"/>
    
        <Button
            android:id="@+id/button_5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/button_3"
            android:layout_toRightOf="@id/button_3"
            android:text="Button 5"/>
    
    </RelativeLayout>
    

    运行结果:

    在这里插入图片描述

    • layout_above :处于被引用控件之上。
    • layout_below :处于被引用控件之下。
    • layout_toLeftOf :处于被引用控件之左。
    • layout_toRightOf :处于被引用控件之右。

    通过 android:layout_centerInParent 定位 button 3 之后,以其为基准,定位其他四个 button 的位置。

    边缘对齐

    • layout_alignLeft :该控件左边缘与被引用控件左边缘对齐。
    • layout_alignRight:该控件右边缘与被引用控件右边缘对齐。
    • layout_alignTop :该控件顶部边缘与被引用控件顶部边缘对齐。
    • layout_alignBottom :该控件底部边缘与被引用控件底部边缘对齐。

    在这里插入图片描述


    FrameLayout :帧布局

    这种布局没有方便的定位方式,所有的控件都默认的摆放在布局的左上角。但可以类似于 LinearLayout 中通过 layout_gravity 来指定控件在布局中的对齐方式:

    在这里插入图片描述


    Percent :百分比布局

    layout_weight 属性让设计布局变得更方便,但可惜的是只有 LinearLayout 支持该功能,因此提供了 PercentFrameLayoutPercentRelativeLayout 分别解帧布局和相对布局的功能局限性。

    具体来说,即可以不再使用 wrap_contentmatch_parent 等方式来指定控件大小,而是直接指定控件在布局中所占的百分比。

    使用时,由于 Android 将百分比布局定义在了 support 库中,因此只需在 app/build.gradle 文件中添加下面依赖,需要注意的是 support 库在 Androidx 1.0.0 及更高版本中被 AndroidX 库完全取代了……因此添加依赖时需如此实现:

    在这里插入图片描述
    在这里插入图片描述

    • 只用完整路径 androidx.percentlayout.widget.PercentFrameLayout 作为标签名,因为百分比布局不像其他三个内置在系统中。
    • 必须定义一个命名空间 app 才能使用百分比布局的自定义属性。
    • 使用 layout_widthPercentlayout_heightPercent 两个属性来定义控件长款,值以百分比形式表示。
    • 继承自 FrameLayout ,因此所有控件默认摆放在左上角,可以借助 layout_gravity 来避免控件重叠。

    ConstraintLayout :约束布局

    常被视作增强型的相对布局,ConstraintLayout 不仅可以解决 LinearLayout 常有的嵌套布局缺陷,还具备 RelativeLayout 的相对布局功能。

    自定义控件

    在这里插入图片描述

    • 所有控件都是直接或者间接地继承自 View 的,所有布局都是直接或间接继承自 ViewGroup 的。
    • View 是 Android 中最基本的一种 UI 组件,它可以在屏幕上绘制一块矩形区域,响应这块区域的各种事件,封装好的各种控件其实就是在 View 的基础之上添加了各自特有的功能。
    • ViewGroup 是一种特殊的 View,可以包含很多的 子View子ViewGroup,是一个放置控件和布局的容器。

    封装复用的页面

    在前端页面中有许多重复使用频率高的页面,如导航栏、底部栏等,对于这些页面,可以一次编撰代码并封装,之后多次调用以实现复用。

    这里通过约束布局实现标题栏布局文件 title.xml

    <?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"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/cmy4">
    
        <Button
            android:id="@+id/title_back"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_margin="5dp"
            app:layout_constraintHorizontal_weight="1"
            android:background="@drawable/cmy1"
            android:text="Back"
            android:textColor="#fff"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toLeftOf="@id/title_text" />
    
        <TextView
            android:id="@+id/title_text"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="Title Text"
            app:layout_constraintHorizontal_weight="2.5"
            android:textColor="@color/teal_200"
            android:textSize="24sp"
            app:layout_constraintTop_toTopOf="@id/title_back"
            app:layout_constraintBottom_toBottomOf="@id/title_back"
            app:layout_constraintLeft_toRightOf="@id/title_back"
            app:layout_constraintRight_toLeftOf="@id/title_edit" />
    
        <Button
            android:id="@+id/title_edit"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_margin="5dp"
            app:layout_constraintHorizontal_weight="1"
            android:background="@drawable/cmy1"
            android:text="Edit"
            android:textColor="@color/white"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintLeft_toRightOf="@id/title_text"
            app:layout_constraintRight_toRightOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    android:background 不生效

    res/values/themes.xml 中:
    在这里插入图片描述
    修改为:
    在这里插入图片描述

    相对定位

    通过形如 layout_constraintTop_toTopOf 的属性来定位控件,该类属性值可为 parent 从而与父布局相适配。举两个例子,上述代码中:

    • title_backapp:layout_constraintLeft_toLeftOf="parent" :意为将 title_back左边缘 约束到 父布局左边缘
    • title_editapp:layout_constraintStart_toEndOf="@id/title_back" :意为 title_edit起始位置title_back结束位置

    相对定位中的 layout_constraintBaseline_toBaselineOf 意为 文本基线 对齐。

    对齐前:在这里插入图片描述 对齐后:在这里插入图片描述

    通过相对布局实现居中:
    在这里插入图片描述

    用一张图总结相对定位:
    在这里插入图片描述

    如果两个或以上控件通过下图的方式约束在一起,就可以认为是他们是一条链(图为横向的链,纵向同理):

    在这里插入图片描述
    一条链的第一个控件是这条链的链头,当所有控件的 高/宽度 都为 固定值/wrap_content 时,可以在 链头 中通过设置 layout_constraintHorizontal_chainStyle 来改变 链的样式

    • spread :展开元素 (默认);
    • spread_inside :展开元素,但链的两端贴近 parent;
    • packed :链的元素将被打包在一起。
      在这里插入图片描述
      当所有控件的 高/宽度 都为 0dp 时,可以在 每个控件 中通过设置 layout_constraintHorizontal_weight(constraintVertical为纵向) 来改变 链的权重

    界面显示:

    在这里插入图片描述


    引入封装好的布局

    • 在布局文件中加上一句 <include layout="@layout/title"/>
    • 隐藏系统自带的标题栏:
    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) actionBar.hide();
    

    自定义控件

    不光布局会被重复使用,某些控件其功能是固定的,比如返回按钮,都是销毁当前活动。因此也可以对其进行封装复用,创建一个自定义类 TitleLayout.java 继承 LinearLayout,并且重写里面的构造方法

    public class TitleLayout extends LinearLayout {
        public TitleLayout(Context context, Attributes attrs){
            super(context, (AttributeSet) attrs);
            LayoutInflater.from(context).inflate(R.layout.title, this);
        }
    }
    

    此时,在布局中引入 TitleLayout 控件就会调用这个构造函数,因此使用 LayoutInflater 来实现动态加载,from() 方法可以构建出一个 LinearLayout 对象,然后调用 inflate 可以动态加载一个布局文件,里面传入两个参数:

    • 加载布局文件的 id
    • 参数一的父布局。

    现在可以在其他 xml 文件中(比如 second_layout.xml)添加这个自定义控件:

    <com.example.activitytest.TitleLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </com.example.activitytest.TitleLayout>
    

    com.example.activitytestTitleLayout 文件所在的完整路径名。如此一来即可把 title 布局界面直接搬到 second_layout 布局中,那么 SecondActivity 其显示的布局自然就是 title.xml 的样子。

    此时我们可以为布局中的控件注册点击事件:
    在这里插入图片描述

    展开全文
  • Android 常见界面控件(对话框篇)

    千次阅读 2022-01-22 11:39:06
    第3章 Android 常见界面控件(简单控件篇) 目录第3章 Android 常见界面控件(简单控件篇)3.2 AlterDialog对话框的使用3.2.1 AlterDialog对话框概述3.2.2 普通对话框3.2.3 单选对话框3.2.4 多选对话框3.2.5 自定义...

    第3章 Android 常见界面控件(对话框篇)

    3.2 AlterDialog对话框的使用

    AlterDialog对话框用于提示一些重要信息或显示一些需要用户额外交互的内容,一般以小窗口的形式展示在界面上

    3.2.1 AlterDialog对话框概述

    使用AlterDialog创建的对话框一般包含标题,内容和按钮三个区域

    (1)调用AlertDialog的静态内部类Builder创建AlertDialog .Builder的对象

    (2)调用AlertDialog .Builder的setTitle()和IsetIcon()方法分别设置AlertDialog对话框的标题名称和图标

    (3)调用AlertDialog. Builder的setMessageO、setSingleChoiceltems()或者setMultiChoiceltems()方法设置AlertDialog对话框的内容为简单文本、单选列表或者为多选列表

    (4)调用AlertDialog.Builder的setPositiveButton()和setNegativeButton()方法设置AlertDialog对话框的确定和取消按钮

    (5)调用AlertDialog.Builder的create()方法创建AlertDialog对象

    (6)调用AlertDialog对象的show()方法显示该对话框

    (7)调用AlertDialog对 象的dismiss()方法取消该对话框

    3.2.2 普通对话框

    普通对话框的内容区域一般显示简单的文本信息,它是通过AlterDialog.Builder对象调用setMeeeage()设置的,setMessage方法的具体信息:

    setMessage(CharSequence message)

    典例

    public class MainActivity extends AppCompatActivity{
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        @Override
        public  void onBackPressed(){
            //声明对象
            final AlertDialog dialog;
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("普通对话框");
            builder.setIcon(R.mipmap.ic_launcher);
            builder.setMessage("是否退出应用");
            //添加确定按钮
            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog,int which) {
                    dialog.dismiss();   //关闭对话框
                    MainActivity.this.finish(); //关闭MainActivity
                }
            });
            //添加取消按钮
            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
            dialog = builder.create();
            dialog.show();
        }
    }
    

    上述代码重写了onBackPressed()方法用于监听用户点击“回退键”的事件

    • 然后经过AlterDialog dialog;声明对象
    • 再通过AlterDialog.Builder builder = new AlterDialog.Builder(this)创建AlertDialog .Builder的对象
    • 然后通过setTitle等方法设置对话框,以及定义其两个按钮的操作
    • 最后通过builder.create()创建AlterDialog对象,并调用其show()方法显示对话框

    启动测试

    在这里插入图片描述

    3.2.3 单选对话框

    单选对话框的内容区域显示为单选列表。单选列表是通过AlertDialog. Builder对象调用setSingleChoiceItemO方法设置的。setSingleChoiceltem0方 法的语法格式如下所示:

    setSingleChoiceItems (CharSequence[] items, int checkedItem, OnClickListenerlistener)

    • items: 表示单选列表中的所有选项数据
    • checkedltem: 表示单选列表中的默认选项角标
    • listener: 单选列表的监听接口

    典例

    MainActivity.java文件

    public class MainActivity extends AppCompatActivity{
        String res;
        String sss[] = new String[] {"全栈开发工程师", "产品经理", "前端开发工程师", "数据分析工程师"};
        public  void Text(){
             final TextView textView = (TextView)findViewById(R.id.tx);
            //声明对象
            final AlertDialog dialog;
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("单选对话框");
            builder.setIcon(R.mipmap.bb);
            builder.setSingleChoiceItems(sss, 0, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    res=sss[which];
                }
            });
            //添加确定按钮
            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog,int which) {
                    textView.setText(res);
                    dialog.dismiss();   //关闭对话框
                }
            });
            //添加取消按钮
            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
            dialog = builder.create();
            dialog.show();
        }
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button bt = (Button)findViewById(R.id.bt1);
            bt.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Text();
                }
            });
        }
    }
    

    activity_main.xml文件:

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="你的职业选择:"/>
        <TextView
            android:id="@+id/tx"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="演示文本"
            android:textColor="#0000FF"
            android:textSize="22sp"
            android:layout_marginBottom="10dp"
            android:layout_gravity="center" />
        <Button
            android:layout_gravity="center"
            android:id="@+id/bt1"
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:text="选择职业"/>
    
    

    启动测试

    在这里插入图片描述

    3.2.4 多选对话框

    多选对话框的内容区域显示为多选列表。多选列表是通过AlertDialog Builder对象调用setMultiChoiceltems0方法设置的,setMultiChoicelterms()方法

    setMultiChoiceItems (CharSequence[] i tems, int checkedItem, OnClickListenerlistener)

    • items: 表示多选列表中的所有选项数据
    • checkedItem: 表示多选列表中默认勾选的选项角标
    • listener:表示多选列表的监听接口

    典例

    MainActivity.java文件

    public class MainActivity extends AppCompatActivity{
        CharSequence sss[] = new CharSequence[] {"全栈开发工程师", "产品经理", "前端开发工程师", "数据分析工程师"};
        boolean ssses[] = new boolean[] {false,true,false,false};
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button bt = (Button)findViewById(R.id.bt1);
            bt.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                    Text();
                }
            });
        }
        public void Text(){
            //声明对象
            AlertDialog dialog;
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("多选对话框");
            builder.setIcon(R.mipmap.bb);
            builder.setMultiChoiceItems(sss, ssses, new DialogInterface.OnMultiChoiceClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    ssses[which] = isChecked;
                }
            });
            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    StringBuffer sb = new StringBuffer();
                    for(int i=0;i<=ssses.length-1;i++){
                        if(ssses[i]){
                            sb.append(sss[i]).append(" ");
                        }
                    }
                    if(sb != null){
                        Toast.makeText(MainActivity.this,""+sb,Toast.LENGTH_LONG).show();
                    }
                    dialog.dismiss();
                }
            });
            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
            dialog = builder.create();
            dialog.show();
        }
    }
    

    代码解释:

    • 先定义两个数组,一个CharSequence类型的数组sss和一个boolean类型的数组ssses,分别用于表示存放多选列表item的文本信息和选中状态
    • 初始化AlterDialog对象dialog,初始化AlterDialog.Builder对象builder,为builder设置titel,icon等属性,然后设置两个按钮
    • 通过builder对象的setMultiChoiceItems()方法为对话框添加多选列表,并为该列表设置监听事件,在onClick()方法中得到被点击的序号which和该item是否被选中的信息,并将isChecked的值赋给ssses[which]

    activity_main.xml文件:

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="30dp"
            android:text="职业兴趣小调查:"
            android:layout_marginBottom="20dp"/>
        <Button
            android:layout_gravity="center"
            android:id="@+id/bt1"
            android:textSize="20dp"
            android:textStyle="bold"
            android:background="@mipmap/aa"
            android:layout_width="150dp"
            android:layout_height="50dp"
            android:text="点击参与"
            android:textColor="#ffffff"/>
    

    启动测试

    在这里插入图片描述

    3.2.5 自定义对话框

    Android程序中由于界面风格不同,一般不直接使用系统提供的对话框,而是根据项目需求自定义相应的对话框样式

    自定义对话框的流程

    1.现在activity_main.xml文件中添加一个Button,用来设置点击事件弹出自定义对话量

        <Button
            android:layout_gravity="center"
            android:id="@+id/bt1"
            android:textSize="20dp"
            android:textStyle="bold"
            android:layout_width="250dp"
            android:layout_height="50dp"
            android:text="点击弹出自定义对话框"
            android:textColor="#ffffff"/>
    

    2.在res/layout目录下创建custom_dialog.xml布局文件,用来设计弹出对话框的布局内容

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingTop="16dp">
            <TextView
                android:id="@+id/title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:textColor="#333333"
                android:visibility="visible"
                android:textSize="18sp"
                android:layout_marginBottom="16dp"/>
            <TextView
                android:id="@+id/message"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:gravity="center"
                android:textColor="#999999"
                android:textSize="14sp" />
        <View
            android:layout_width="match_parent"
            android:layout_height="4dp"
            android:layout_marginTop="16dp"
            android:background="#E8E8E8" />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <Button
                android:id="@+id/negtive"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_weight="1"
                android:paddingTop="16dp"
                android:paddingBottom="16dp"
                android:background="@null"
                android:gravity="center"
                android:textSize="16sp"
                android:singleLine="true"
                android:textColor="#999999"
                />
            <View
                android:layout_width="4dp"
                android:layout_height="match_parent"
                android:layout_marginTop="16dp"
                android:background="#E8E8E8"
                />
            <Button
                android:id="@+id/positive"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_weight="1"
                android:paddingTop="16dp"
                android:paddingBottom="16dp"
                android:background="@null"
                android:layout_gravity="center"
                android:singleLine="true"
                />
        </LinearLayout>
        </LinearLayout>
    </LinearLayout>
    

    3.创建一个CustomDialog类继承自AlterDialog类,用于初始化自定义对话框中的空间以及响应按钮的点击事件

    public class CustomDialog extends AlertDialog{
        //显示的标题,消息,按钮
        private TextView titleTv;
        private TextView messageTv;
        private Button negtiveBn,positiveBn;
        //显示的消息
        protected CustomDialog(Context context) {
            super(context);
        }
        private  String message;
        private  String title;
        private  String positive,negtive;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.custom_dialog);
            initView();
            initEvent();
        }
        //初始化页面控件
        private void initView(){
            negtiveBn = (Button)findViewById(R.id.negtive);
            positiveBn = (Button)findViewById(R.id.positive);
            titleTv = (TextView)findViewById(R.id.title);
            messageTv = (TextView)findViewById(R.id.message);
        }
        //初始化页面控件的显示数据
        private void  refreshView(){
            //如果自定义了title和message的信息,则会在弹出框中显示
            if(!TextUtils.isEmpty(title)){
                //设置标题控件的文本为自定义的title
                titleTv.setText(title);
                //标题控件设置为显示状态
                titleTv.setVisibility(View.VISIBLE);
            }else{
                //否则标题控件设置为隐藏状态
                titleTv.setVisibility(View.GONE);
            }
            if(!TextUtils.isEmpty(message)){
                //设置标题控件的文本为自定义的message
                messageTv.setText(message);
            }
            //如果没有自定义按钮的文本,则默认显示“确认”和“取消”
            if(!TextUtils.isEmpty(positive)){
                //设置按钮控件的文本为自定义文本
                positiveBn.setText(positive);
            }else{
                positiveBn.setText("确定");
            }
            if(!TextUtils.isEmpty(negtive)){
                //设置按钮控件的文本为自定义文本
                negtiveBn.setText(negtive);
            }else{
                negtiveBn.setText("取消");
            }
        }
        //初始化界面的确定和取消的监听器
        private void  initEvent(){
            //设置“确定”按钮的点击事件的监听器
            positiveBn.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                    if(onClickBottomListener!=null){
                        onClickBottomListener.onPositiveClick();
                    }
                }
            });
            negtiveBn.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                    if(onClickBottomListener!=null){
                        onClickBottomListener.onNegtiveClick();
                    }
                }
            });
        }
        @Override
        public void  show(){
            super.show();
            refreshView();
        }
        public interface OnClickBottomListener{
            void onPositiveClick();
            void onNegtiveClick();
        }
        //设置“确定”和“取消”按钮的回调
        public OnClickBottomListener onClickBottomListener;
    
        public CustomDialog setOnClickBottomListener(OnClickBottomListener onClickBottomListener){
            this.onClickBottomListener = onClickBottomListener;
            return this;
        }
    	public CustomDialog setAll(String message,String title,String  negtive,String  positive){
            this.message = message;
            this.title = title;
            this.negtive = negtive;
            this.positive = positive;
            return this;
        }
    }
    

    代码解析:

    • 14-19行代码重写了AlterDialog的onCreate()方法,在该方法中通过setContextView()方法加载布局文件custom_dialog.xml,接着调用initView()、initEvent()方法,分别用于初始化界面控件,初始化界面按钮的点击事件
    • 第28行创建了一个refreshView()方法,在此方法中先判断对话框中的tital标题控件和message信息控件的信息是否进行了自定义,若自定义了则显示自定义的信息,若没有自定义则不显示,然后判断两个按钮的信息是否进行了自定义,若没有为其设置默认信息
    • 第58行的initEvent()通过setOnClickListener()方法分别设置两个按钮的点击事件监听器,在监听器的onClick()方法中调用实现按钮的点击事件的方法
    • 第78行代码重写了AlterDialog的show()方法,并在其中调用refreshView()初始化界面数据
    • 第82行创建了一个OnClickBottomListener()接口,在接口中有两个待实现的方法onPositiveClick(),onNegtiveClick(),分别用于实现两个按钮的点击监听事件,在initEvent()方法中实现按钮的点击监听事件时,直接实现OnClickBottomListener()接口的两个方法即可
    • 在CustomDialog类中设置两个按钮的监听事件为OnClickBottomListener接口的onPositiveClick(),onNegtiveClick()方法,在MainActivity类中实例化CustomDialog类时调用其setOnClickBottomListener()方法,然后实现onPositiveClick(),onNegtiveClick()方法时等于重写了两个按钮的onClick()方法

    4.在MainActivity中实现CustomDialog类并重写其中的方法

    public class MainActivity extends AppCompatActivity{
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Text();
        }
        public void Text() {
            Button bt = (Button) findViewById(R.id.bt1);
            bt.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    final CustomDialog dialog = new CustomDialog(MainActivity.this);
                    dialog.setAll("您确定要删除信息","提示","取消","确定");
                    dialog.setOnClickBottomListener(new CustomDialog.OnClickBottomListener() {
                        @Override
                        public void onPositiveClick() {
                            dialog.dismiss();
                        }
                        @Override
                        public void onNegtiveClick() {
                            dialog.dismiss();
                        }
                    });
                    dialog.show();
                }
            });
        }
    }
    

    启动测试

    在这里插入图片描述
    如果文章对您有所帮助,记得一键三连支持一下哦~

    展开全文
  • 文本框类控件

    千次阅读 2017-07-28 09:23:26
    Text:用来设置或返回标签控件中显示的文本信息; AutoSize:用来获取或设置一个值,该值指示是否自动调整控件的大小以完整显示其内容。取值为 true时,控件将自动调整到刚好能容纳文本时的大小,取值为false时,...
  • 内容索引:C#源码,菜单窗体,自动提示,ComBox C# 可以自动提示的ComBox下列选择控件,如上图所示,如果在右侧的输入框输入信息,如果信息与列表框中原有信息一致的话,信息会自动显示在列表框,用户可以不必输入...
  • php 表格控件

    2016-10-19 11:21:10
    php绘制折线图,条形图
  • Wizard控件可以用用在下列工作: (1)收集多个步骤的相关信息。 (2)用于收集用户输入的大型Web网页可分割成较小的逻辑步骤。 (3)允许线性或非线性的导航各个步骤。 Wizard控件可区分成4大区域: (1)向导...
  • 工具箱右击-选择项-浏览选中DLL后确定发生如下错误: 后来把类库项目换成VS2008来生成就能被成功添加. 转载于:https://www.cnblogs.com/kkwoo/p/3691970.html
  • VB封装RichEdit文本框控件,可编辑文字,实现像Word文字编辑功能的文本控件,关于RichEdith Class(菜新 2007):  下列属性需要在Init过程之前调用.另:如果觉得不方便您可以自己定义类相关属性与方法  ...
  • 本文实例讲述了Android编程实现改变控件背景及形态的方法。分享给大家供大家参考,具体如下: 1. 改变背景 在res/drawable下创建一个xml文件: <?xml version=1.0 encoding=UTF-8?> // 控件被按下时候的...
  • MSComm控件使用详解

    2022-08-01 09:17:47
    MSComm控件使用详解 MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。
  • 问题是:当前项目的FrameWork版本太低 ...解决:在项目属性,把FrameWork版本改成高版本,重新编译。 再打开设计器就能看到添加的组件了 转载于:https://www.cnblogs.com/TBhome/p/10757024.html...
  • excel没有日期控件的解决方法 缺少microsoft date and time picker control 6.0(sp4) 拷贝Mscomct2.ocx文件到C:\WINDOWS\system32目录下 如果该目录下有此文件则直接替换 如果该目录下没有此文件,则把文件放入...
  • Delphi QQ小键盘控件.rar

    2019-07-10 17:18:51
    Delphi QQ小键盘控件,//如果下列图片属性为空,则FUsePicture为假  FBackgroundPicture: TPicture; //背景图片  FNormalKeyPicture: TPicture; //按键平常背景图片  FMoveKeyPicture: TPicture; //鼠标移动到...
  • MSComm控件

    热门讨论 2012-09-09 19:51:03
    WIN7 delphi7 使用MSCOMM控件的方法: 1、找到下列三个文件:  Mscomm.reg, Mscomm32.ocx,Mscomm32.dep ,  把这三个文件拷贝到Windows的system目录下(注意WinNT下是System32)。然后用Windows下的注册...
  • 一个VC 属性窗控件及源码实例演示,属性窗控件主要用来让用户设置或定义编程的某些模块,这个属性窗用起来挺方便的,一共有两个这种控件,这次只发一个,某些模块或函数可参考下: 属性表有事件发生时,向其物主...
  • android复习选择填空

    万次阅读 2017-03-14 17:08:45
    下列控件中,只有两种状态并能相互切换的是:( d  ) A、ImageButton B、SeekBar C、Toast D、ToggleButton   为了使 android 适应不同分辨率机型,布局时字体单位应用 (     sp     ), ...
  • 控件中一些常用的属性和事件

    千次阅读 2019-09-01 11:22:56
    3)Font:表示控件中显示文字的字体格式,包括字体名称、字号以及是否以斜体、加粗和下划线显式。 4)BackColor:表示控件的背景色。 5)ForeColor:表示控件的前景色。 6)Image:表示控件上显示的图片。 7)...
  • 第5讲 客观题自测练习 1单选(1分)列表选择框的标签是 A.ListView B.ArrayAdaptor C.Spinner D.List 正确答案:C 2单选(1分)列表选择框的功能是...4单选(1分)关于列表选择框下列说法错误的是 A.通常只能选择一个选择项 B
  • VB增强版ListView ComBox下拉列表控件,属性说明:  1.LVHead:列标题字符串,各列标题间用半角逗号“,”隔开  2.LVWidth:列宽度,也用“,”隔开,数目应与LVHead相同,值的大小取要显示的字符数  3.Style:下列...
  • 1下列控件中没有Caption 属性的是 _ A 框架 B 列表框 C 复选框 D 单选按钮 2 复选框的Value 属性为 1 时表示 _ A 复选框未被选中 B 复选框被选中 C 复选框内有灰色的勾 D 复选框操作有误 3 用来设置斜体字的属性是 _...
  • HTML input控件

    万次阅读 多人点赞 2018-04-12 21:41:48
    input控件input 控件是单行输入型控件,用来接受用户输入的信息。可以在 form 元素的开始标签和结束标签之间,添加 input 元素来创建 input 控件。input 元素是一个带有属性的空元素,格式为:&lt;input type=&...
  • C#自定义控件VS用户控件

    千次阅读 2022-01-20 11:26:23
    C#自定义控件VS用户控件1、C#自定义控件VS用户控件大比拼2、为自定义控件(或类)的方法属性添加注解2.1、Description:在属性窗口添加属性及属性说明2.2、Browsable2.3、EditorBrowsable2.4、Category2.5、...
  • 今天做一个项目,需要隐藏input file然后获取它的值,但连jquery都无法获取它的值 代码如下: [removed] //FX获取文件路径方法 function ...为了克服这一点,请按照下列步骤操作:(1)在地址栏输入”about:config”
  • MFC 对话框常用控件详解

    千次阅读 2019-08-19 10:24:28
    文章目录按钮控件命令按钮(Button)单选按钮(Radio Button)复选框(Check Box)编辑框(Edit Control) 按钮控件 按钮控件包括命令按钮(Button)、单选按钮(Radio Button)和复选框(Check Box)等。 按钮...
  • 下列关于数据验证控件的说法不正确的是()。 A 必填验证控件只能检查输入信息是否为空 比较验证控件可以进行输入数据的类型检查 范围验证控件需要使用Minimum和Maximum属性设置范围 规则验证控件...
  • 下列选项,属于定义字符串资源使用的标签的是()A A、< string/ > B、< strings/ > C、< include/ > D、demin 在Activity的onCreate()方法,加载布局资源文件的方法是()B A、...
  • 使用Delphi 10.2 开发工具,在Fastreport控件上添加了条形码之后,预览是正常的,可以看到条码,并且没有出错,可是应用程序编辑完之后,一运行程序就提示出错。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,591
精华内容 18,236
关键字:

下列控件中