• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > EditText 关于控件的一些技巧

EditText 关于控件的一些技巧

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了edittext控件,android edittext控件,edittext,edittext属性,android edittext等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

EditText 关于控件的一些技巧


1.避免EditText输入日期时的验证

当在EditText输入日期时,通常需要对输入的日期进行验证,然而我们可以用Button代替EditText,从而避免验证。</div> 首先,使用Button控件替代EditText控件,但给Button控件设置一个EditText控件的背景,使之看起来像一个EditText控件,如下:</div>
</div> 这里的@android:drawable/edit_text是系统自带的背景,即EditText的背景。</div> 然后在java代码里实现当用户点击这个控件时弹出一个日期选择对话框,让用户直接选择日期,而不是输入</div>
  private int mYear;
  private int mMonth;
  private int mDay;
  private OnDateSetListener mDateSetListener;
  private Button mDateButton;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // get the current date
    final Calendar c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);

    mDateSetListener = new DatePickerDialog.OnDateSetListener() {
      @Override
      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        mDateButton.setText(getString(R.string.picked_date_format, monthOfYear, dayOfMonth, year));
      }
    };

    mDateButton=(Button)findViewById(R.id.details_date);
    mDateButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        showDatePickerDialog();
      }
    });
  }
  private void showDatePickerDialog(){
    new DatePickerDialog(this,mDateSetListener,mYear, mMonth,mDay).show();
  }
总结:你也许会问,为什么不直接在EditText上设置点击事件,而要用一个Button去替代呢?因为使用Button更加安全,用户也不能修改Button的文字显示。你也可以使用TextWatcher来验证用户的输入,但是这将耗费更多的时间。在app中使用android的系统资源能非常好地利用设备的原有风格。</div>  </div>  </div>

2.格式化TextView的文字显示

\</div> 上面这条tweet,由不同的文字风格和颜色组成:黑色、蓝色,还有一部分点击可以打开一个网址。让人觉得这是一个自定义控件来展示这些信息,实际上只用一个TextView控件就能实现。下面将通过一个例子来展示如何给TextView添加不同风格的文字和超链接。</div> 这是xml布局:</div>

    
这是java代码:</div>
public class MainActivity extends AppCompatActivity {

    TextView helloWorldText;
    TextView textTwo;
    String textLink="visit Sina Home";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //第一个添加超链接
        helloWorldText=(TextView)findViewById(R.id.hello_world);
        helloWorldText.setText(Html.fromHtml(textLink));
        helloWorldText.setMovementMethod(LinkMovementMethod.getInstance());
        //第二个改变前景色和背景色
        textTwo=(TextView)findViewById(R.id.text_2);
        Spannable spannable=new SpannableString(textTwo.getText());
        spannable.setSpan(new BackgroundColorSpan(Color.BLUE),2,5,0);//背景蓝色
        int index=textTwo.getText().toString().indexOf(",");//获取“,”的位置
        spannable.setSpan(new ForegroundColorSpan(Color.YELLOW),index,textTwo.getText().length(),0);//前景黄色
        textTwo.setText(spannable);
    }
}
效果如下:点击Sina Home可以跳转到新浪首页
\</div>

3.给文字添加发光效果

给文字添加如下图所示的LED效果。</div> \</div>  </div> 首先新建一个LedTextView继承自TextView,这个类主要用于设置字体效果。</div>
public class LedTextView extends TextView {

  private static final String FONTS_FOLDER = "fonts";
  private static final String FONT_DIGITAL_7 = FONTS_FOLDER
      + File.separator + "digital-7.ttf";

  public LedTextView(Context context) {
    super(context);
    init(context);
  }

  public LedTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context);
  }

  public LedTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init(context);
  }

  private void init(Context context) {
    AssetManager assets = context.getAssets();
    final Typeface font = Typeface.createFromAsset(assets,FONT_DIGITAL_7);//设置字体
    setTypeface(font);
  }

}
然后在布局中设置两个LedTextView,一个用来显示88:88:88的背景,一个用来显示当前的时间,如下:</div>


    

    

在activity中设置</div>
public class MainActivity extends Activity {

  private static final String DATE_FORMAT = "%02d:%02d:%02d";
  private static final int REFRESH_DELAY = 500;

  private final Handler mHandler = new Handler();
  private final Runnable mTimeRefresher = new Runnable() {
    @Override
    public void run() {
      final Date d = new Date();
      mTextView.setText(String.format(DATE_FORMAT, d.getHours(),
          d.getMinutes(), d.getSeconds()));
      mHandler.postDelayed(this, REFRESH_DELAY);
    }
  };

  private TextView mTextView;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mTextView = (TextView) findViewById(R.id.main_clock_time);
  }

  @Override
  protected void onResume() {
    super.onResume();
    mHandler.post(mTimeRefresher);
  }

  @Override
  protected void onStop() {
    super.onStop();
    mHandler.removeCallbacks(mTimeRefresher);
  }
}
其中%02d是用来限制数字格式的,2是代表宽度,如果整数不够2列就补上0,比如printf("%02d" ,3);结果就是03,
如果数字大于2则没有影响,比如printf("%02d",1234);结果是1234</div>  </div>

4.为控件添加圆角背景

</div> 直接给控件添加一个drawable背景就行了,没什么好说的</div>

    
    
 </div>


5.在onCreate()方法中获取控件的高度和宽度

</div> 如果在onCreate()方法中直接调用view的getHeight()和getWidth()
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • android如何改变editText控件中部分文字的格式,androidedittext
  • EditText 关于控件的一些技巧
  • Android Studio中的EditText控件使用详解

相关文章

  • 2017-05-26AndroidStudio怎样导入jar包,androidstudiojar
  • 2017-05-26android studio 使用checkstyle全攻略
  • 2017-05-26Android Facebook和Twitter分享
  • 2017-05-26快速自动更新Android Studio版本
  • 2017-05-26仿Android印象笔记底部导航栏
  • 2017-05-26关于Linux的core dump
  • 2017-05-26ionic打包项目,运行时报错A problem occurred configuring root project &#39;android&#39;。。。,ionicconfiguring
  • 2017-05-26Android之使用文件进行IPC,android文件ipc
  • 2017-05-26RecyclerView再封装,RecyclerView封装
  • 2017-05-26再见NullPointerException。在Kotlin里null的处理(KAD 19),kotlinnull

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Kerberos简介
    • Android面试题--事件处理,android试题--事件
    • Android 应用程序集成Google 登录,androidgoogle
    • 关于Genymotion下载比较慢的解决办法,genymotion解决办法
    • 找不到draw9patch.bat?已经不用找了,draw9patch.bat
    • Android动态部署五:如何从插件apk中启动Service
    • 配置adb环境变量,adb环境变量
    • JSON解析,json在线解析
    • 年底了,给MySQL做个例行巡检吧
    • Android开发5:应用程序窗口小部件App Widgets的实现,androidwidgets

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有