从继承关系来看,所有组件继承自View。容器也是继承自View,它能容纳别的View。
所有容器继承自ViewGroup。包括
FrameLayout, LinearLayout, RelativeLayout, SlidingDrawer , AbsoluteLayout, AdapterView
Activity中绑定容器的方法 setContentView(linearLayout)
获取activity最顶层的view
findViewById(android.R.id.content);
getWindow().getDecorView();
一般是viewgroup
2018-08-28
以为View就是类似于h5里面的div,然后用View去包TextView,总是报错,后来才知道View就是一个组件,不是容器。
View在线性布局中有一个好处,就是占位,
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<View
android:layout_width="0dp"
android:layout_weight="10"
android:layout_height="0dp"></View>
<TextView
android:layout_width="50dp"
android:background="@color/red"
android:layout_weight="1"
android:layout_marginRight="0dp"
android:layout_height="50dp" />
</LinearLayout>
比如这个,TextView我想右边排,直接右边排是不行的,要在它前边放一个VIew作填充,把它的权重设低点,TextView权重设高点就行了。
原来这个dp和网页的px一样的,我的360N5手机,都是360px(dp)的宽。
在LinearLayout中
android:layout_marginBottom没效果,要用android:layout_gravity="bottom"(重心)
icon图标还是要贴边切,并且透明png
如果是正方形,可通过
android:padding="5dp"改变值,控制它居中显示的大小。
2018-08-29
相对布局中,这两个属性要同时设置好。
android:layout_alignParentRight="true"
android:layout_marginRight="0dp"
FrameLayout布局
以左上角为坐标,不断地把view叠起来。如果后面的没有档到前面的,前面的也会显示出来。
从xml里读布局文件并实例化。
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(
R.layout.activity_alarm_message_item, null);