00_小知识点

1.
    底部控件不受输入法影响被顶到上方
    解:在AndroidManifest.xml中给这个Activity设置 <activity android:windowSoftInputMode="stateVisible|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() {
@Override
public 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:theme="@android: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:listSelector="@android:color/transparent",后条目点击就没有变化了 ,
再设置item的background即可。
android:background="@drawable/bg_item"
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" android:state_pressed="false"/>
<item android:drawable="@color/holo_blue_light" android:state_pressed="true"/>
</selector>

8.
    listview条目上有checkbox抢焦点的处理办法

方法一
在checkbox的父布局上设置属性android:descendantFocusability="blocksDescendants"
该属性使子布局的焦点按各自的区块划分,这样checkbox抢焦点的范围仅限于自身,不会把整个item的焦点都抢走。这种设置方式会使得checkbox有自己的响应事件,同时checkbox之外的item区域也可以响应自己的点击事件。

方法二
在checkbox布局里设置属性、
android:focusable="false"
android:clickable="false"
android:enabled="false"
使得checkbox完全不能获得焦点、不可被点击、不能响应点击事件。这样之后的效果就是checkbox区域不会再有自己的事件,就算点击的checkbox,也响应这个item的点击事件。同时要记得在item的点击事件中判断checkbox的当前状态,并手动变更checkbox的状态

9.
    取消EditText下划线:给控件设置background属性,可以设置为白色(和父布局背景有关),也可以设置为透明(推荐设置为透明),(还未验证background设置为@null)
    android:background="@android:color/transparent"

10.
    用到fragment叠加时,出现背景叠加,可以给fragment的父布局设置一个白色背景,即可

11.
    listview的数据为空的时候可以设置可以设置一张空背景图
    listview.setEmptyView(...);

12.
    将listview的分割线隐藏,并且设置条目之间的距离
    android:divider="@android:color/transparent" //将分割线设置为透明
android:dividerHeight="18dp"                 //将分割线高度设置为18dp

    android:listSelector="@android:color/transparent"  //将条目的点击选择状态改为透明
    然后给item的父布局background设置背景状态选择器,这样就会显示点击条目
    状态选择器:
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_listview_pressed"
android:state_pressed="true"/>
<item android:drawable="@drawable/shape_listview"/>
    </selector>
    
    自定义的形状:
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"
android:topLeftRadius="10dp"
android:topRightRadius="10dp"/>
<solid android:color="#2f00"/>
<stroke android:width="1dp" android:color="#f00"/>
    </shape>


    Screenshot_20160519-225642.png


13.
    给RadioButton选中改变颜色(动态改变颜色)

    radiobutton字体颜色改变color_radiobutton.xml
        (新建文件,写在color文件夹下,不是values的colors.xml,给RadioButton的textColor设置"@color/xxx")
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
    3.     <item android:state_checked="true" android:color="@color/color_text_selected"/>    
    4.     <!-- not selected -->    
    5.     <item android:state_checked="false" android:color="@color/color_text_normal"/>    
    6. </selector>  


 

radiobutton背景颜色改变radio_group_selector.xml


    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <selector xmlns:android="http://schemas.android.com/apk/res/android" >  
    3.     <item android:state_checked="true" android:drawable="@color/color_bg_selected" ></item>  
    4.     <item android:state_checked="false" android:drawable="@color/color_bg_normal"></item>  
    5. </selector>  


color.xml(as的values的是colors.xml文件)

    1. <color name="transparent">#000000</color>  
    2.     <color name="color_bg_selected">#e0301e</color>  
    3.     <color name="color_bg_normal">#e7e7e8</color>  
    4.     <color name="color_text_selected">#ffffff</color>  
    5.     <color name="color_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却传了int

17.
    ScrollView只能接受一个子节点
    解:ScrollView只能有一个子节点,所以在ScrollView里嵌套一个ViewGroup(可以是LinearLayout),然后在LinearLayout里写一个布局

18.
    使EditText进入界面默认不跳出软键盘(不获得焦点)
    解:给EditText的父控件设置属性:
    android:focusable="true"
    android:focusableInTouchMode="true"

    点击EditText区域外让EditText失去焦点
    解:给父布局设置触摸监听,设置focusable为true,设置focusable的触摸模式为true,最后请求焦点
    mLinearLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mLinearLayout.setFocusable(true);
mLinearLayout.setFocusableInTouchMode(true);
mLinearLayout.requestFocus();
               return false;
}
});

19.
    点击EditText区域外,隐藏输入法
    @Override
public 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 ArrayAdapter<String>(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:isIndicator="true"不可拖动,将作为指示器)        
  1. <RatingBar
  2. android:id="@+id/rb_stars"
  3. style="@android:style/Widget.RatingBar"
  4. android:numStars="5"
  5. android:layout_width="wrap_content"
  6. android:layout_height="wrap_content"
  7. android:minHeight="15dp"
  8. android:progressDrawable="@drawable/ratingbar"
  9. android:rating="4"/>
progressDrawable的ratingbar.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item android:id="@android:id/background" android:drawable="@drawable/rating_small_empty" />
  4. <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/rating_small_empty" />
  5. <item android:id="@android:id/progress" android:drawable="@drawable/rating_small_full" />
  6. </layer-list>

23.        
    //告诉Android系统对主线程访问网络和文件的检查策略不要这么严厉
  1. StrictMode.setThreadPolicy(StrictMode.ThreadPolicy.LAX);

24.
    随机设置字体大小,字体颜色(Color.rgb(int,int,int))
  1. Random random = new Random();
  2. int randomTextSize = random.nextInt(13) + 12;
  3. textView.setTextSize(randomTextSize);
  4. int red = random.nextInt(200);
  5. int green = random.nextInt(200);
  6. int blue = random.nextInt(200);
  7. textView.setTextColor(Color.rgb(red,green,blue));

25.
    1.png
    ListView的条目布局上是三块View,但点击条目时,整个条目都被选中点击了,这个时候可以给,这三个view设置一个android:clickable="true"属性即可.

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(1950)vue之电商管理系统电商系统之渲染添加父类的对话框

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

前端学习(1951)vue之电商管理系统电商系统之获取父级数据列表

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

前端学习(1952)vue之电商管理系统电商系统之级联选择器

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

前端学习(1954)vue之电商管理系统电商系统之重置表单数据

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

前端学习(1955)vue之电商管理系统电商系统之完成添加分类功能

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

前端学习(1953)vue之电商管理系统电商系统之根据父类数据处理表单中的数据

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

前端学习(1959)vue之电商管理系统电商系统之通过路由加载分类参数

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

Entity Framework 数据库先行、模型先行、代码先行

数据库先行(Database First)&#xff1a;基于已存在的数据库&#xff0c;利用某些工具&#xff08;如Vs提供的EF设计器&#xff09;创建实体类&#xff0c;数据库对象与实体类的匹配关系等&#xff0c;你也可以手动修改这些自动生成的代码及匹配文件。 模型先行(Model First)&a…

前端学习(1960)vue之电商管理系统电商系统之分类参数的基本结构

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

第二阶段--个人冲刺--第十天

个人冲刺10 一&#xff0e;任务&#xff1a;实现用户自定义功能&#xff0c;可修改用户名&#xff08;默认用户名为ID&#xff0c;ID不可改&#xff09;上传头像&#xff0c;修改头像&#xff0c;修改登录密码&#xff0c;查看所关注人的最新动态 二&#xff0e;预计时间&#…

前端学习(1961)vue之电商管理系统电商系统之调用api获取数据

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

前端学习(1962)vue之电商管理系统电商系统之渲染商品分类的选择框

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

前端学习(1963)vue之电商管理系统电商系统之控制级联选择框的选择范围

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

前端学习(1964)vue之电商管理系统电商系统之渲染分类参数的tab页标签

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

Windows7+VS2012下OpenGL 4的环境配置

系统环境 Windows 7 Ultimate x64&#xff0c;Visual Studio Ultimate 2012 Update 4&#xff0c;和一块支持OpenGL 4.x的显卡。 准备工作 首先用GPU Caps Viewer检查机器最高支持的OpenGL及GLSL版本。比如我的机器可以支持OpenGL 4.5和GLSL 4.5&#xff1a; 下载GLEW和GLFW的源…

前端学习(1965)vue之电商管理系统电商系统之渲染添加参数的按钮

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

前端学习(1966)vue之电商管理系统电商系统之获取参数列表

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…