转帖自:http://tech.techweb.com.cn/viewthread.php?tid=508605
android2.2中EditText不可编辑的问题
本来这个也不算个大问题,但我开发中确实遇到了,特开此贴,希望能帮到一些android新手。
可能有人会说,设置EditText不可编辑那还不简单,直接设置
Xml代码 [url=][/url]
1.android:editable="false"
android:editable="false" 就可以了,如果你一直是这么做的,那么你就不用看下去了,在android2.2中直接设置 android:editable="false"是不起作用的,(我在模拟器和真机环境中测试都不起作用) 在android2.2中 editable是depreceated的,大家可以看看api文档http://developer.android.com/ref ... .attr.html#editable 。
那么我们是不是就不可以设置EditText的编辑状态呢,当然不是,我们可以设置
Xml代码 [url=][/url]
1.android:focusable="false"
android:focusable="false" 这是什么意思呢,很简单,不让它获得输入焦点(不要告诉我你不知道什么是焦点),既然得不到焦点,当让就无法输入了,我在http://stackoverflow.com/questio ... -edittext-component 上也到的这样的解决方式。
那么为什么要这么做呢,为什么不要 android:editable了呢,这是一个用户体验的问题。android是一个移动平台,大多数是没有键盘的,都是屏幕软键盘,如果你设置EditText为不可编辑,那么就不应该打开软键盘,而不是打开软键盘了又无法输入。
似乎到了这里就没有说的了,请你不要着急,这样设置后有一个问题,无法选中EditText的内容,因为它无法获得焦点 ,这个问题我也不知道怎么解决,希望大大们能给解决下。
如何在java代码中控制EditText不可编辑呢,因为EditText没有setEditable这样的方法,这个问题坛子里已经有很多高手解决了,使用 InputFilter
这个软件的源码在此:
http://www.cocoachina.com/bbs/read.php?tid=19117
1,看到很多人问如何计算两点之间的距离,其实很简单哎。
准备两个CLLocation的对象,比如要计算某个位置与使用
者
当前位置的距离,则其中一个CLLocation是userLocation = [locationManager
location],locationManager是CLLocationManager的实例,并已执行[locationManager
startUpdatingLocation];
然后计算这两个CLLocation的距离(已格式化成12.34 km
):
2,在处理MKAnnotationView时,都要判断对应annotation是不是MKUserLocation这个显示用户当前位置的蓝点,以避免误操作。
3,- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
这个delegate函数一般会在给MKMapView对象添加annotations后马上执行,但执行不会马上结束。如果在它完成之前就调用
[mapView viewForAnnotation:someAnnotation];的话,会返回nil的结果,这时对这个返回的nil做任何操作都不会在屏幕
上显示……
4,MKMapView放大缩小时,需要注意的是放大,至少放大2倍以上才会被执行。
5,下面随便列一些其他没提到的代码
,供搜索引擎搜索
6,问题:
发现MKAnnotationView的Callout View有bug。
我在后台
更新subtitle后,若不手动点一下其他MKAnnotationView再点回之前已经显示Calloutview的MKAnnotationView的话,那这个MKAnnotationView的Calloutview里的subtitle就不会被更新……
说清楚点就是:点了某个大头针显示信息后,若这时后台更新了它的subtitle,然后你再点这个大头针会发现它的subtitle显示成了一个空白。这时得点一下其他大头针,再点回来,原来那个大头针的信息才是完整的。
虽然有个notification是MKAnnotationCalloutInfoDidChangeNotification,但SDK手册里说这个已经不能用了。我尝试用了一下也没有任何效果……
不知道还有其他方法没
后面同学回答在此
回一下第6個問題...
如果用戶選上的是mkav,那...
if(mkav.selected)
{
[mkav setSelected:NO];
[mkav setSelected:YES];
}
這樣就會更新subtitle了[url=job.php?action=topost&tid=17969&pid=138830] [/url]
1 判断乐phone手机
判断的方法为取Build.MODEL或PRODUCT,乐phone的值有qsd8250_surf、3GW100、3GW101
注意:目前的Builder.MANUFACTURER是UNKNOWN,以后是lenovo
2 最小化兼容性
原生android最小化是如此处理:
Intent i= new Intent(Intent.ACTION_MAIN); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addCategory(Intent.CATEGORY_HOME); startActivity(i);
乐phone对应方法
Intent i= new Intent(Intent.ACTION_MAIN, null); i.putExtra("GOHOME","GOHOME"); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); i.setClassName("com.android.launcher","com.android.launcher.HomeScreen"); startActivity(i);