此知识点总结是开发过程当中遇到的比较棘手或者恶心的地方,因此随时更新,以备不时之需android
1. viewFlipper中的item如何动态设置高度?布局
例如:post
<ViewFlipper android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom"> <include layout="@layout/layoutone"/> <include layout="@layout/layouttwo"/> <include layout="@layout/layoutthree"/> </ViewFlipper>
假如想作成一个layoutone是50dp,layouttwo是50dp,layoutthree是80dp高度的话,你会发如今子布局中设置高度后,ViewFlipper切换时老是以子view中高度最大的值为其高度值,也就是80dp。可是又不想让layoutone和layouttwo过高,开始的时候想经过LayoutParams动态设置吧,惋惜不行(把viewflipper单独出来才行),而后找到须要设置android:measureAllChildren="false",或者代码调用setMeasureAllChildren(false);便可,由于默认状况下measureAllChildren=true。设置后各个view的高度就不一样了。该属性也适合FrameLayout等。spa
缘由:参见FrameLayout#onMeasure(int, int)的源码,android:measureAllChildren="true"时,将全部children加入到mMeasureAllChildren的链表中,而后再从新measure下。code
2. HorizontalScrollView显示不全或者layout_gravity失效的问题blog
<HorizontalScrollView android:id="@+id/scrollView0" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scrollbarAlwaysDrawHorizontalTrack="false" android:scrollbars="none" > <LinearLayout android:id="@+id/bookstore_category_filter0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="8dip" > </LinearLayout> </HorizontalScrollView>
如上代码是能够的,可是若是在LinearLayout中加入个android:layout_gravity="center_horizontal",就会出现显示不全并且会在一侧多出一块的问题。貌似是这个属性与HorizontalScrollView的属性冲突。解决方法就是去掉layout_gravity="center_horizontal"这个属性便可。three