网站建设感受,ai软件,域名注册需要哪些条件,动漫网页设计模板素材1.底部控件不受输入法影响被顶到上方解:在AndroidManifest.xml中给这个Activity设置 activity android:windowSoftInputModestateVisible|adjustPan 2.动态设置控件margin值解:LayoutParams是RelativeLayout或者LinearLayout看控件的父节点,一般参数都是wr…1. 底部控件不受输入法影响被顶到上方 解:在AndroidManifest.xml中给这个Activity设置 activity android:windowSoftInputModestateVisible|adjustPan 2. 动态设置控件margin值 解: LayoutParams是RelativeLayout或者LinearLayout看控件的父节点,一般参数都是wrap_content,然后把获 得的参数设置margin,params.setMargin(左,上,右,下),最后控件设置参数,mView.setLayoutParams(params) RelativeLayout.LayoutParams params new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);WindowManager wm (WindowManager) getSystemService(WINDOW_SERVICE);Display display wm.getDefaultDisplay();int screenWidth display.getWidth();int marginLeft screenWidth / 5 ;params.setMargins(marginLeft * 4 - marginLeft / 2,0,0,0);mTv_shoppingcart_num.setLayoutParams(params);3. Fragment切换时想要保存数据:要用add,show,hide.不能用replace,它会重新创建fragment 底部用RadioButton实现,实现setOnCheckedChangeListener() mBottom_Rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {FragmentTransaction ft mFm.beginTransaction();hideFragments(ft);switch (checkedId) {case R.id.bottom_rb_home:if (mHomeFragment null) {mHomeFragment new HomeFragment();ft.add(R.id.fl_content, mHomeFragment);} else {ft.show(mHomeFragment);} break; } ft.commit(); } }); private void hideFragments(FragmentTransaction ft) {if (mHomeFragment ! null) {ft.hide(mHomeFragment);}if (mSearchFragment ! null) {ft.hide(mSearchFragment);}if (mBrandFragment ! null) {ft.hide(mBrandFragment);}if (mShoppingCartFragment ! null) {ft.hide(mShoppingCartFragment);}if (mMoreFragment ! null) {ft.hide(mMoreFragment);}}4. 给listview添加头布局,并且设置头布局不可被点击 解: View headView View.inflate(this, R.layout.head_view, null);mListView.addHeaderView(headView,null,false);5.让splash界面全屏显示:确认SplashActivty是否继承自Activity,AndroidStudio自动创建时默认继承AppCompatActivity,必须更改为Activity,在清单文件对应的splash的activity节点下增加:android:themeandroid:style/Theme.NoTitleBar.Fullscreen属性即可6.Fragment的hide/show方法,当show的时候执行等同于Activity的OnResume,hide的时候执行等同于Activity的OnPause方法: Fragment的OnHiddenChanged(boolean hidden) 方法,当fragment调用了hide方法,就会传入true参数表示该fragment被隐藏了,当fragment调用了show方法后,该方法就会传入了参数为false表示该fragment被显示了 if(hidden){ //不在最前端界面显示 等价于 OnPause } else { //重新显示到最前端 等价于 OnResume }7. listview条目点击变色,自定义变色,item点击变色一般Listview条目被点击需要自定义点击时颜色变化这里给出一种简单方法。ListView的listSelector属性设置为#00000000或null 或android:listSelectorandroid:color/transparent后条目点击就没有变化了 再设置item的background即可。android:backgrounddrawable/bg_item?xml version1.0 encodingutf-8?selector xmlns:androidhttp://schemas.android.com/apk/res/androiditem android:drawableandroid:color/white android:state_pressedfalse/item android:drawablecolor/holo_blue_light android:state_pressedtrue//selector8. listview条目上有checkbox抢焦点的处理办法方法一在checkbox的父布局上设置属性android:descendantFocusabilityblocksDescendants该属性使子布局的焦点按各自的区块划分这样checkbox抢焦点的范围仅限于自身不会把整个item的焦点都抢走。这种设置方式会使得checkbox有自己的响应事件同时checkbox之外的item区域也可以响应自己的点击事件。方法二在checkbox布局里设置属性、android:focusablefalseandroid:clickablefalseandroid:enabledfalse使得checkbox完全不能获得焦点、不可被点击、不能响应点击事件。这样之后的效果就是checkbox区域不会再有自己的事件就算点击的checkbox也响应这个item的点击事件。同时要记得在item的点击事件中判断checkbox的当前状态并手动变更checkbox的状态9. 取消EditText下划线:给控件设置background属性,可以设置为白色(和父布局背景有关),也可以设置为透明(推荐设置为透明),(还未验证background设置为null) android:backgroundandroid:color/transparent10. 用到fragment叠加时,出现背景叠加,可以给fragment的父布局设置一个白色背景,即可11. listview的数据为空的时候可以设置可以设置一张空背景图 listview.setEmptyView(...);12. 将listview的分割线隐藏,并且设置条目之间的距离 android:dividerandroid:color/transparent //将分割线设置为透明android:dividerHeight18dp //将分割线高度设置为18dp android:listSelectorandroid:color/transparent //将条目的点击选择状态改为透明 然后给item的父布局background设置背景状态选择器,这样就会显示点击条目 状态选择器: selector xmlns:androidhttp://schemas.android.com/apk/res/androiditem android:drawabledrawable/shape_listview_pressedandroid:state_pressedtrue/item android:drawabledrawable/shape_listview/ /selector 自定义的形状: shape xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:shaperectanglecornersandroid:bottomLeftRadius10dpandroid:bottomRightRadius10dpandroid:topLeftRadius10dpandroid:topRightRadius10dp/solid android:color#2f00/stroke android:width1dp android:color#f00/ /shape 13. 给RadioButton选中改变颜色(动态改变颜色) radiobutton字体颜色改变color_radiobutton.xml (新建文件,写在color文件夹下,不是values的colors.xml,给RadioButton的textColor设置color/xxx)?xml version1.0 encodingutf-8? selector xmlns:androidhttp://schemas.android.com/apk/res/android item android:state_checkedtrue android:colorcolor/color_text_selected/ !-- not selected -- item android:state_checkedfalse android:colorcolor/color_text_normal/ /selector radiobutton背景颜色改变radio_group_selector.xml?xml version1.0 encodingutf-8? selector xmlns:androidhttp://schemas.android.com/apk/res/android item android:state_checkedtrue android:drawablecolor/color_bg_selected /item item android:state_checkedfalse android:drawablecolor/color_bg_normal/item /selector color.xml(as的values的是colors.xml文件)color nametransparent#000000/color color namecolor_bg_selected#e0301e/color color namecolor_bg_normal#e7e7e8/color color namecolor_text_selected#ffffff/color color namecolor_text_normal#000000/color 14. Activity的启动模式为singleTask时,(任务栈中activity打开过,直接杀死其上方的activity并且将自己置于栈顶)要从其他页面传值给这个activity时要在这个设置singleTask的Activity中重新 onNewIntent()方法,加入setIntent(intent); Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); mShopping_cart.setChecked(true); requestNetwork(); }15. listview中包含checkbox勾选删除,第一个条目一直选中bug,解决方案 checkBox.setChecked(false);checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { info.isChecked isChecked;}}});16. android.content.res.Resources$NotFoundException: String resource ID #0x1 报这个错误表明:setText的时候应该传String却传了int17. ScrollView只能接受一个子节点 解:ScrollView只能有一个子节点,所以在ScrollView里嵌套一个ViewGroup(可以是LinearLayout),然后在LinearLayout里写一个布局18. 使EditText进入界面默认不跳出软键盘(不获得焦点) 解:给EditText的父控件设置属性: android:focusabletrue android:focusableInTouchModetrue 点击EditText区域外让EditText失去焦点 解:给父布局设置触摸监听,设置focusable为true,设置focusable的触摸模式为true,最后请求焦点 mLinearLayout.setOnTouchListener(new View.OnTouchListener() {Overridepublic boolean onTouch(View v, MotionEvent event) {mLinearLayout.setFocusable(true);mLinearLayout.setFocusableInTouchMode(true);mLinearLayout.requestFocus(); return false;}});19. 点击EditText区域外,隐藏输入法 Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() MotionEvent.ACTION_DOWN) {View v getCurrentFocus();if (isShouldHideInput(v, ev)) {InputMethodManager imm (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);if (imm ! null) {imm.hideSoftInputFromWindow(v.getWindowToken(), 0);}}return super.dispatchTouchEvent(ev);}// 必不可少否则所有的组件都不会有TouchEvent了if (getWindow().superDispatchTouchEvent(ev)) {return true;}return onTouchEvent(ev);}public boolean isShouldHideInput(View v, MotionEvent event) {if (v ! null (v instanceof EditText)) {int[] leftTop { 0, 0 };//获取输入框当前的location位置v.getLocationInWindow(leftTop);int left leftTop[0];int top leftTop[1];int bottom top v.getHeight();int right left v.getWidth();if (event.getX() left event.getX() right event.getY() top event.getY() bottom) {// 点击的是输入框区域保留点击EditText的事件return false;} else {return true;}}return false;}20. 给ListView添加头布局,必须在setAdapter之前设置添加,在布局中可以给布局点击的selector View view View.inflate(this,R.layout.headview,null);mListView.addHeaderView(view,null,false); mListView.setAdapter(new ArrayAdapterString(this,android.R.layout.simple_list_item_1,getData())); 设置ListView的HeaderView不可被点击 mListView.addHeaderView(view,null,false);21. 单例设计模式:避免在项目中多次new对象,多次调用相同代码 public class DataLoader { //1.私有构造函数,禁止其他类创建其对象private DataLoader(){}//2.创建本类对象,并且私有和静态(静态是为了下面getInstance是静态的,类刚加载不是静态的不初始化private static DataLoader mInstance new DataLoader();//3.提供外部公共的访问方式去获取其类对象,返回值是其类的本身public static DataLoader getInstance() {return mInstance;} }22. 打分星星(可以拖动,设置android:isIndicatortrue不可拖动,将作为指示器) RatingBar android:idid/rb_stars styleandroid:style/Widget.RatingBar android:numStars5 android:layout_widthwrap_content android:layout_heightwrap_content android:minHeight15dp android:progressDrawabledrawable/ratingbar android:rating4/progressDrawable的ratingbar.xml?xml version1.0 encodingutf-8?layer-list xmlns:androidhttp://schemas.android.com/apk/res/android item android:idandroid:id/background android:drawabledrawable/rating_small_empty / item android:idandroid:id/secondaryProgress android:drawabledrawable/rating_small_empty / item android:idandroid:id/progress android:drawabledrawable/rating_small_full //layer-list23. //告诉Android系统对主线程访问网络和文件的检查策略不要这么严厉StrictMode.setThreadPolicy(StrictMode.ThreadPolicy.LAX);24. 随机设置字体大小,字体颜色(Color.rgb(int,int,int)) Random random new Random(); int randomTextSize random.nextInt(13) 12; textView.setTextSize(randomTextSize); int red random.nextInt(200); int green random.nextInt(200); int blue random.nextInt(200); textView.setTextColor(Color.rgb(red,green,blue));25. ListView的条目布局上是三块View,但点击条目时,整个条目都被选中点击了,这个时候可以给,这三个view设置一个android:clickabletrue属性即可.26. 使用第三方imageloader时错误:Java.lang.RuntimeException: ImageLoader must be init with configuration before using 解:在Application的类中onCreate方法内加上: ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(this));27. listview加了headerview.第0条条目,position需要1 来自为知笔记(Wiz)转载于:https://www.cnblogs.com/ice5-blog/p/5534803.html