升级AS3.0 kotlin、databinding、glide的一些问题
首先是Unresolved reference: databinding这个东西。折腾过程不说了,贴出项目的的build.gradle
12345678910111213141516171819202122232425buildscript { ext.kotlin_version = '1.1.51' ext.android_plugin_version = '3.0.0' repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application depe ...
parameter must be a descendant of this view
非法参数异常,遇到的问题是:ScrollView里面有RecyclerView,RecyclerView里的item有EditText,我是在这个页面在后台的时候,因为数据发生了变化,让页面刷新了,比如adapter.notifyDataSetChanged();,因获取焦点产生的问题
12345678java.lang.IllegalArgumentException: parameter must be a descendant of this view at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:5103) at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:5040) at android.widget.ScrollView.isWithinDeltaOfScreen(ScrollView.java:1140) at android.widget.ScrollView.onSizeCha ...
面试逻辑题
叔叔来家做客,哥哥妹妹问叔叔生日,叔叔说是1989年,然后将月份告诉哥哥,日子告诉妹妹,最后说是下面的其中一个:1月9日,1月20日,1月31日2月1日,2月15日,2月29日3月11日,3月21日,3月31日4月18日,4月19日,4月20日5月9日,5月19日,5月29日6月15日,6月18日,6月21日。哥哥说:“不知道,妹妹肯定也不知道”妹妹说:“本来不知道,现在我知道了”哥哥说:“那我也知道了”问叔叔生日。
解:
哥哥开始能确定妹妹不知道,所以哥哥掌握的正确的月份里,肯定没有单独出现的日子,否则妹妹就直接知道了。那么出现了一次的1日和11日所在的 2月和3月都不是哥哥知道的那个正确的月份。
妹妹听完后就知道了,说明剩余的1、4、5、6月份中不能有出现2次的日子,否则妹妹得不出结论,那么 1月20日和4月20日、1月9日和5月9日、4月18日和6月18日、4月19日和5月19日被排除,还剩下1月31日、5月29日、6月15日、6月21日。
哥哥听完妹妹的话也知道了,说明哥哥所知道的那个月份中,已经只有一个日子了。那么6月15日和6月21日排除。
1989年的2月没有29日 ...
Gson解析成list、map
新建一个type传入即可
12Type type = new TypeToken<HashMap<String, Integer>>() {}.getType(); HashMap<String,Integer> map = new Gson().fromJson(json, type);
自定义背景透明度的全屏dialog
1、在styles.xml里加上
12345<style name="dialog_fullscreen" parent="@android:style/Theme.Translucent.NoTitleBar"> <item name="android:windowTranslucentStatus">true</item> <!--自定义透明度--> <item name="android:windowBackground">@color/black_30</item> </style>
2、建一个DialogFragment
123456789101112131415public class BaseDialogFragment extends DialogFragment { @Override public void onCreate(@Nul ...
根据文字长度更改TabLayout指示条宽度
经常安卓开发要用苹果风格的东西,比如dialog
直接上代码
12345678910111213141516171819202122232425262728293031323334353637public class SimpleDialog extends AlertDialog { private String title; private String left; private String right; private View.OnClickListener listener; public SimpleDialog(@NonNull Context context,String title,String left,String right, View.OnClickListener listener) { super(context); this.title = title; this.left = left; this.right = right; ...
自定义dialog设置大小、设置背景圆角无效等一些坑
经常安卓开发要用苹果风格的东西,比如dialog
直接上代码
12345678910111213141516171819202122232425262728293031323334353637public class SimpleDialog extends AlertDialog { private String title; private String left; private String right; private View.OnClickListener listener; public SimpleDialog(@NonNull Context context,String title,String left,String right, View.OnClickListener listener) { super(context); this.title = title; this.left = left; this.right = right; ...
gravity=center_vertical与centerVertcal=true的区别
这特么是一个坑。一个ImageView放在RelativeLayout中,给RelativeLayout设置android:gravity="center_vertical发现并没有垂直居中,歪了一点点。而直接给ImageView设置android:layout_centerVertical="true"就正好。
用ImageView的getTop()和getBottom()探索过程不提了,直接说结果:首先我ImageView的资源文件高度为28px;当没有设置drawable-hdpi,图片资源只放在了drawable-xhdpi里,而设备是240dpi的时候,hdpi里找不到,就去xhdpi里找了,找到后显示在屏幕上会缩放0.75倍,变成21px;区别就在这儿了。
比如RelativeLayout的高度是80px;android:layout_centerVertical="true"是设置给ImageView的,会测量好ImageView的实际高度得到21px,然后垂直居中就是距离顶部(80-21)/2=29。
而android: ...
给软键盘加上一个插件布局
思路:放一个布局在页面底部,隐藏起来。当输入法弹起来的时候,检测到布局的变化,设置插件布局的显示即可
在AndroidManifest.xml里相应的Activity里加上android:windowSoftInputMode="stateHidden|adjustResize"至于为什么是adjustResize而不是adjustSpan,看图
平时是这样adjustResize是这样
adjustPan是这样
区别:EditText本来在背景的L处adjustResize会把EditText顶到G处adjustPan,EditText还是在L处,输入法把所有布局都顶起来了。当然这俩还有一些别的区别,这不是本文讨论的重点。
上代码布局:
1234567891011121314151617181920212223242526272829<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:la ...
打开相册失败no activity found
今天看到crash列表里出现了ActivityNotFoundException,信息就是标题上的那些,定位之后发现是从相册选择图片处隐式启动相册找不到Activity,可能是用户的设备上没有相册应用(黑人问号)。
之前的处理方式是这样
123Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);startActivityForResult(intent, RC_ALBUM);
在onActivityResult里面是这样
1234567891011121314151617else if (requestCode == RC_ALBUM && resultCode == RESULT_OK && data != null) { Uri selectedImage = data.getData(); if (selectedImage != null) { St ...