编程tips

来源:互联网 发布:网络销售如何找客户 编辑:程序博客网 时间:2024/04/26 04:56

1.radiogroup下的radiobutton的字体不居中,在不需要drawable的情况下,应该把drawable置为空,不然会出bug;

字体状态选择器应该用@color

2.onActivityResult提前调用

   估计是调用startactivityforresult的activity的启动模式是单例。所有无法使用onactivityforresult。

3.在使用状态选择器做圆角

   在使用状态选择器做圆角的时候,设置背景的时候要用gradient,在selector用background设置背景的话,该背景不会变成圆角的。如果radius设为0无效的话,就把radius设为1.

4.Ontouchevent,在复写ontouchevent的时候有可能使设置了点击了点击事件的item触发事件。如果该view设置一个setonscrolllistener就不会触发事件了.

5.

ScrollView中的LinearLayout不能使用android:layout_height=”fill_parent”的问题。可以在

ScrollView中使用 android:fillViewport=”true”解决。

6.

android.view.WindowManager$BadTokenException:Unable to add window -- token null is not for anapplication修正bug

分析:

问题在于newAlertDialog.Builder(Context),虽然这里的参数是AlertDialog.Builder(Contextcontext)

但我们不能使用getApplicationContext()获得的Context,而必须使用Activity的Context对象,因为只有一个Activity才能添加一个窗体。  

解决方法:

将new AlertDialog.Builder(Contextcontext)中的参数用Activity的Context对象即可

7.

设置自定义dialog的时候,如果背景颜色和自定义进度条的颜色不同的话, 进度条就会有边框。解决办法是将style的颜色设置为  

<style name="loading_dialog" parent="android:style/Theme.Dialog">
        <item name="android:windowNoTitle">true</item>
         <item name="android:windowBackground">@color/rotate_progressbar_color</item>
    </style>

<color name="rotate_progressbar_color">#00ffffff</color>

或者将imageview的背景设置为00ffffff,注意前面一定要加00;

8.listview加了header的时候会使点击位置发生变化。header是第0个位置.

9.padding的数值在onmeasure方法时候计算,margin和gravity的数值在onlayout的时候绘制

10.

在onLayout()过程结束后,我们就可以调用getWidth()方法和getHeight()方法来获取视图的宽高了。说到这里,我相信很多朋友长久以来都会有一个疑问,getWidth()方法和getMeasureWidth()方法到底有什么区别呢?它们的值好像永远都是相同的。其实它们的值之所以会相同基本都是因为布局设计者的编码习惯非常好,实际上它们之间的差别还是挺大的。

首先getMeasureWidth()方法在measure()过程结束后就可以获取到了,而getWidth()方法要在layout()过程结束后才能获取到。另外,getMeasureWidth()方法中的值是通过setMeasuredDimension()方法来进行设置的,而getWidth()方法中的值则是通过视图右边的坐标减去左边的坐标计算出来的。观察SimpleLayout中onLayout()方法的代码,这里给子视图的layout()方法传入的四个参数分别是0、0、childView.getMeasuredWidth()和childView.getMeasuredHeight(),因此getWidth()方法得到的值就是childView.getMeasuredWidth() - 0 = childView.getMeasuredWidth() ,所以此时getWidth()方法和getMeasuredWidth() 得到的值就是相同的,但如果你将onLayout()方法中的代码进行如下修改


每次替换或者添加后,都要commit一样,才能算一个完整的事务,这里用了Fragment嵌套,还要注意一个问题,由于我当时没注意,导致想了好久才找出问题的原因所在,如果你是嵌套了Fragment,那么使用FragmentManager的一定要注意你当前的Fragment是属于嵌套的fragment还是顶层的Fragment,如果是顶层Fragment,那么你调用FragmentManager的时候,应该这样写getActivity().getSupportFragmentManager(),如果是嵌套的fragment那么应该这样写getChildFragmentManager()


0 0
原创粉丝点击