网友通过本文主要向大家介绍了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>

