首先,LinearLayout是继承自ViewGroup的控件容器,支持addView(...)方法组添加子控件。子控件的排列方式是线性排列,可以选择(HORIZONTAL)横向或者(VERTICAL)纵向,这个参数可以在XML布局中设置,也可以在Java源码中控制:
viewContainer.setOrientation(LinearLayout.VERTICAL);
android:orientation="vertical"
第二,既然是容器,那么就会包含多个子控件,LinearLayout提供了在控件之间设置Drawable作为间隔的操作。方法setShowDividers(int showDividers)是控制是否显示Drawable间隔,显示在哪个位置的方法,参数的取值及说明如下表:
SHOW_DIVIDER_NONE | 默认值,不显示Drawable分割设置 |
SHOW_DIVIDER_BEGINNING | 在容器的开头部位显示一个Drawable分割对象 |
SHOW_DIVIDER_END | 在容器的末尾部位显示一个Drawable分割对象 |
SHOW_DIVIDER_MIDDLE | 在任意两个子控件中间插入一个Drawable分割对象,插入总数为(n-1)个 |
android:divider="@drawable/lock"
android:showDividers="middle"
android:dividerPadding="50dp"
viewContainer.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
viewContainer.setDividerPadding(50);
viewContainer.setDividerDrawable(getResources().getDrawable(R.drawable.sample));
void setGrivity(int grivity)
void setHorizontalGrivity(int horizontalGrivity)
void setVeritalGrivital(int grivity)
上面这几个方法的参数在View.Grivity类中以常量形式给出了定义。
最后,这里给出几个API方法,访问域为protected的方法在使用LinearLayout时不会用到,但在必要时对LinearLayout进行自定义封装时会用到他们:
1. protected boolean checkLayoutParams(ViewGroup.LayoutParams p)
2. protected LinearLayout.LayoutParams generateDefaultLayoutParams()
3. public LinearLayout.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p)
4. public LinearLayout.LayoutParams generateLayoutParams(AttributeSet attrs)
5. protected void onDraw(Canvas canvas)
6. protected void onLayout(boolean changed, int left, int top, int bottom, int right)
8. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)