Android之常见问题集锦Ⅱ
Android问题集锦Ⅰ:http://www.cnblogs.com/AndroidJotting/p/4608025.html
EditText输入内容改变事件监听
_edit.addTextChangedListener (new TextWatcher(){ @Override public void afterTextChanged (Editable s) { // TODO Auto-generated method stub } @Override public void beforeTextChanged (CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged (CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub //关键是这里,监听输入的字符串,如果大于零,则可点击,enable. if(s.length()>0){ _ok.setClickable(true); _ok.setEnabled(true); }else{ _ok.setClickable(false); _ok.setEnabled(false); } } });
在代码中设置TextView的颜色
productState.setTextColor(context.getResources().getColor(R.color.product_value_price_color));
sql语句查询某一时间段内的数据:date表示字段
select * from table where date between '2007-10-01' and '2008-10-01' 或者 select * from table where date>'2007-10-01' and date<'2008-10-01' 两个区别不大,between包含了两头的日期,那个不包含
百度搜索框实现
http://www.baidu.com/s?wd=搜索内容&ie=utf-8
点击ProgressDialog外的区域对话框不消失
ProgressDialog mpDialog = new ProgressDialog(OrderTable.this); mpDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置风格为圆形进度条 mpDialog.setTitle("提示");//设置标题 mpDialog.setIcon(R.drawable.icon);//设置图标 mpDialog.setMessage("这是一个圆形进度条"); mpDialog.setIndeterminate(false);//设置进度条是否为不明确 mpDialog.setCancelable(true);//设置进度条是否可以按退回键取消 mpDialog.setCanceledOnTouchOutside(false);//设置点击进度对话框外的区域对话框不消失 mpDialog.show();
File的mkdir() 和 mkdirs()
import java.io.*; public class TestFile { public static void main(String[] args) throws Exception { File f = new File("e://xxx//yyy"); System.out.println(f.mkdirs());//生成所有目录 //f.mkdir(); 必须xxx目录存在才能生成yyy目录 //f.createNewFile(); File f2 = new File("E://zzz//t.txt"); //不能生成文件,只能用createNewFile(); f2.createNewFile(); //且zzz目录必须存在 } }
TextView如何设置字体大小
第一种方式:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/red" android:textSize="16sp" />
第二种方式:
mTextView.setTextSize(14);
需要注意的就是mTextView.setTextSize(14);是以float格式进行设置字体大小的,这一点一定要注意。
TextView如何设置文本内容换行显示
<1>如果直接在XML文件中写入"aaaaa\nbbbb"可以换行。
<2>在Java文件中用textViewObj.setText("aaaa\nbbbb")也可以换行。
<3>将数据封装到模型类后,在Java文件中使用textViewObj.setText(obj.getXXX()).在android的模拟器界面上显示没有换行的"aaaaa\nbbbb",'\n'没有转义成换行。
解决办法:
textView.setText(obj.getXXX().replace("\\n", "\n"));
Android软键盘如何打开与关闭
当我设计应用时,当需要用户输入时,用户操作完成后如何关闭软键盘呢:
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
上面这种方式存在一个小问题,当软件盘已经打开的话,可以正常关闭软键盘,但是当我们没有调出软键盘时,再执行这句话软键盘就会被调出,查了很多资料没有找到比较合适的判断软键盘是否打开的方法,下面提供一个新的方式,对于上面的问题可以很好的解决。
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
Android文件保存路径问题
new File(Environment.getExternalStorageDirectory()+"文件名"+".jpg"//文件将被保存到sdCard根目录下
new File(PathUtils.getPath(context) + "文件名" +"jpg");//文件将被保存的应用安装目录下
android获得手机屏幕高度和宽度
1、WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); int width = wm.getDefaultDisplay().getWidth(); int height = wm.getDefaultDisplay().getHeight(); 2、WindowManager wm = this.getWindowManager(); int width = wm.getDefaultDisplay().getWidth(); int height = wm.getDefaultDisplay().getHeight();
Android获得控件的高度和宽度
TextView mTextView = (TextView) findViewById(R.id.text); LayoutParams layoutParams = (LayoutParams) mTextView.getLayoutParams(); layoutParams.width = this.getWindowManager().getDefaultDisplay().getWidth();//先获得屏幕的宽度 layoutParams.height = (this.getWindowManager().getDefaultDisplay().getWidth()/4)*3;//先获得屏幕的长度 mTextView.setLayoutParams(layoutParams);
Android获取本视频文件的第一帧画面
String path = Environment.getExternalStorageDirectory().getPath(); MediaMetadataRetriever media = new MediaMetadataRetriever(); media.setDataSource(path+"/123.rmvb"); Bitmap bitmap = media.getFrameAtTime(); image = (ImageView)this.findViewById(R.id.imageView1); image.setImageBitmap(bitmap);
Android在onCreate()中获得控件尺寸
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final ImageView imageView = (ImageView) findViewById(R.id.imageview); int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); imageView.measure(w, h); int height =imageView.getMeasuredHeight(); int width =imageView.getMeasuredWidth(); textView.append("\n"+height+","+width); System.out.println("执行完毕.."+System.currentTimeMillis()); } //------------------------------------------------方法一 int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); imageView.measure(w, h); int height =imageView.getMeasuredHeight(); int width =imageView.getMeasuredWidth(); textView.append("\n"+height+","+width); //-----------------------------------------------方法二 ViewTreeObserver vto = imageView.getViewTreeObserver(); vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { public boolean onPreDraw() { int height = imageView.getMeasuredHeight(); int width = imageView.getMeasuredWidth(); textView.append("\n"+height+","+width); return true; } }); //-----------------------------------------------方法三 ViewTreeObserver vto2 = imageView.getViewTreeObserver(); vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this); textView.append("\n\n"+imageView.getHeight()+","+imageView.getWidth()); } });
如何设置ListView中每隔Item之间的间隔
开发中我们经常遇到使用ListView的情况,有时为了更好的视觉效果,我需要设置一下每个Item的之间的间隔,这个如何设计呢?
android:divider="#cccccc"//分割线颜色 android:dividerHeight="1dp"//分割线高度