开蒸 發表於 2020-8-30 16:49:00

Android开发第六讲EditText 编辑框

<p></p><div class="toc"><div class="toc-container-header">目录</div><ul><li>Android开发第六讲EditText 编辑框<ul><li>一丶EditText编辑框属性</li><li>二丶编辑框响应监听事件</li></ul></li></ul></div><p></p>
<h1 id="android开发第六讲edittext-编辑框">Android开发第六讲EditText 编辑框</h1>
<h2 id="一丶edittext编辑框属性">一丶EditText编辑框属性</h2>
<p>EditText 继承自 TextView 所以它的属性我们可以使用. TextView不支持文字的编辑.而EditText支持文字的编辑.</p>
<p>那么说一下常用的属性吧</p>
<pre><code>android:hint = "提示文字"   加上这个编辑框会提示你要输入的文字
android:inputType="textPassworld" 加上这个,表示编辑框输入的时候文字是密文密码形式
android:inputType 可以规定编辑框输入的各种形式.比如密码形式 指定输入数字等.
android:drawableleft 可以给编辑框加图片.这样可以做一个很好的登录框
</code></pre>
<p>使用常用属性配合Button做一个登录框,并且给Button添加监听事件响应消息.</p>
<p>Xml如下</p>
<pre><code class="language-xml">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;RelativeLayout 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=".EdtActive"&gt;
&lt;!--设置用户名提示框--&gt;
    &lt;EditText
      android:id="@+id/EdtView1"
      android:layout_width="match_parent"
      android:layout_height="50dp"
      android:hint="请输入用户名"
      android:maxLines="1"
      android:singleLine="true"
      android:paddingLeft="15dp"
      android:background="@drawable/btn_shape1"
      android:layout_marginTop="50dp"
      android:drawableLeft="@drawable/user"
      android:textSize="20sp"&gt;

    &lt;/EditText&gt;


    &lt;!--设置密码提示框--&gt;
    &lt;EditText
      android:id="@+id/EdtView2"
      android:layout_width="match_parent"
      android:layout_height="50dp"
      android:hint="请输入密码"
      android:paddingLeft="15dp"
      android:background="@drawable/btn_shape1"
      android:inputType="textPassword"
      android:layout_below="@id/EdtView1"
      android:layout_marginTop="10dp"
      android:drawableLeft="@drawable/lock"
      android:drawablePadding="10dp"
      android:textSize="20sp"&gt;

    &lt;/EditText&gt;
&lt;!--创建按钮--&gt;
    &lt;Button
      android:id="@+id/btn_login"
      android:layout_below="@id/EdtView2"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_marginTop="10dp"
      android:textSize="30sp"
      android:text="登录"
      android:background="@drawable/btn_4"
      android:textColor="#ffff00"&gt;

    &lt;/Button&gt;
&lt;/RelativeLayout&gt;
</code></pre>
<p>其中我使用了user图片以及 lock图片.这个可以在网址上找到. 下载32*32资源即可.</p>
<p>https://www.flaticon.com/search?word=user</p>
<p>然后使用之前的 状态选择器布局.</p>
<p>状态选择器 布局如下</p>
<pre><code class="language-xml">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&gt;
&lt;!--    状态选择器 android:state_pressed = true代表按压--&gt;
    &lt;item android:state_pressed="true"&gt;
&lt;!--      如果是按压,那么我们使用shape画一个--&gt;
      &lt;shape&gt;
&lt;!--            设置实心颜色,并且设置圆角--&gt;
            &lt;solid android:color="#ff0000"&gt;&lt;/solid&gt;
            &lt;corners android:radius="10dp"&gt;&lt;/corners&gt;
      &lt;/shape&gt;
    &lt;/item&gt;

&lt;!--    否则设置为绿色--&gt;
    &lt;item android:state_pressed="false"&gt;
      &lt;!--      如果是按压,那么我们使用shape画一个--&gt;
      &lt;shape&gt;
            &lt;!--            设置实心颜色,并且设置圆角--&gt;
            &lt;solid android:color="#0ca30c"&gt;&lt;/solid&gt;
            &lt;corners android:radius="10dp"&gt;&lt;/corners&gt;
      &lt;/shape&gt;
    &lt;/item&gt;
&lt;/selector&gt;
</code></pre>
<p>最后实现按钮点击事件</p>
<pre><code class="language-java">package com.ibinary.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class EdtActive extends AppCompatActivity {

//    响应按钮事件
    private Button m_Login;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_edt_active);
      m_Login = (Button) findViewById(R.id.btn_login);
      m_Login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(EdtActive.this, "登录成功", Toast.LENGTH_SHORT).show();
            }
      });
    }
}
</code></pre>
<p>你的Button是定义在EdtView中的.所以我们的代码要写在 EdtActive.java中</p>
<p>效果如下</p>
<p><img src="https://img2020.cnblogs.com/blog/1197364/202008/1197364-20200830164645285-317616289.png" alt="" loading="lazy"></p>
<p>按钮提示文字 分别是请输入用户名 以及请输入密码. 而且都加了图标.</p>
<p>登录按钮加了状态选择器</p>
<p>点击登录提示登录成功</p>
<p><img src="https://img2020.cnblogs.com/blog/1197364/202008/1197364-20200830164848783-1167762316.png" alt="" loading="lazy"></p>
<h2 id="二丶编辑框响应监听事件">二丶编辑框响应监听事件</h2>
<p>响应监听事件就需要写代码了.</p>
<p>响应的是 编辑框的 <strong>addTextChangedListener</strong></p>
<p>代码如下</p>
<pre><code class="language-java">package com.ibinary.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class EdtActive extends AppCompatActivity {

//    响应按钮事件
    private Button m_Login;
    private EditText m_EdtUser;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_edt_active);
      m_Login = (Button) findViewById(R.id.btn_login);
      m_Login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(EdtActive.this, "登录成功", Toast.LENGTH_SHORT).show();
            }
      });

      m_EdtUser = (EditText)findViewById(R.id.EdtView1);
      m_EdtUser.addTextChangedListener(new TextWatcher() {
            //三个方法,分别是 在修改之前监听 在修改之中监听 以及在修改之后监听
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                //CharSequence 参数1是我们输入的字符.可以在调试输出窗口中数据
                Log.d("EditText = ", charSequence.toString());
            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
      });
    }
}
</code></pre>
<p>在修改中输出消息.可以在Android Studio的日志窗口中看到</p>
<p><img src="https://img2020.cnblogs.com/blog/1197364/202008/1197364-20200830165831754-1292600751.png" alt="" loading="lazy"></p>
<p>至此基本的ExitText属性就到这</p>


</div>
<div id="MySignature" role="contentinfo">
    <div>作者:IBinary</div> <div>出处:https://www.cnblogs.com/iBinary/ </div> <br> <br>
坚持两字,简单,轻便,但是真正的执行起来确实需要很长很长时间.当你把坚持两字当做你要走的路,那么你总会成功.
想学习,有问题请加群.群号:725864912(收费)群名称: 逆向学习小分队 群里有大量学习资源. 以及定期直播答疑.有一个良好的学习氛围. 涉及到外挂反外挂病毒 司法取证加解密 驱动过保护 VT 等技术,期待你的进入。
<br><br>
详情请点击链接查看置顶博客
https://www.cnblogs.com/iBinary/p/7572603.html
<p>本文来自博客园,作者:iBinary,未经允许禁止转载 转载前可联系本人.对于爬虫人员来说如果发现保留起诉权力.https://www.cnblogs.com/iBinary/p/13585700.html</p>
欢迎大家关注我的微信公众号.不定期的更新文章.更新技术. 关注公众号后请大家养成 不白嫖的习惯.欢迎大家赞赏. 也希望在看完公众号文章之后 不忘 点击 收藏 转发 以及点击在看功能.
<img src = "https://images.cnblogs.com/cnblogs_com/iBinary/1827080/o_220306121308_qrcode_for_gh_b8b8f84e4988_258.jpg" alt="微信公众号">
QQ群:
<img src="https://images.cnblogs.com/cnblogs_com/iBinary/1827080/o_21062107294320210621152919.png" alt="QQ群"><br><br>
来源:https://www.cnblogs.com/iBinary/p/13585700.html
頁: [1]
查看完整版本: Android开发第六讲EditText 编辑框