今日十问(四)

1、什么是View?
 <1>所有高级UI组件都继承View类而实现的;
 <2>一个View在屏幕上占据一块矩形区域;
 <3>负责渲染;
 <4>负责处理发生的事件;
 <5>设置是否可见;
 <6>设置是否可以获得焦点等
2、LinearLayout、RelativeLayout和FrameLayout的联系和区别。
 <1>FrameLayout    
     这个布局可以看成是墙脚堆东西,有一个四方的矩形的左上角墙脚,我们放了第一个东西,要再放一个,那就在放在原来放的位置的上面,这样依次的放,会盖住原来的东西。这个布局比较简单,也只能放一点比较简单的东西。    
 <2>LinearLayout    
     线性布局,从外框上可以理解为一个div,他首先是一个一个从上往下罗列在屏幕上。每一LinearLayout里面又可分为垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。    
linearLayout中有一个重要的属性 android:layout_weight="1",这个weight在垂直布局时,代表行距;水平的时候代表列宽;weight值越大就越大。
 <3>RelativeLayout    
     相对布局可以理解为某一个元素为参照物,来定位的布局方式。主要属性有:    
      相对于某一个元素    
      android:layout_below="@id/aaa" 该元素在 id为aaa的下面    
      android:layout_toLeftOf="@id/bbb" 改元素的左边是bbb    
        相对于父元素的地方    
       android:layout_alignParentLeft="true"  在父元素左对齐    
       android:layout_alignParentRight="true" 在父元素右对齐    
      还可以指定边距等
3、View和ViewGroup的区别。
     View是ViewGroup的父类。Android的UI开发使用层次模型来完成,一般都是在一个ViewGroup中嵌套多层ViewGroup,每一层中含有随意数目的View。我们可以将整个屏幕看做一个ViewGroup,它同时也是一个View,而在这个整体的ViewGroup之中,又有多个ViewGroup和View,每个ViewGroup中又可以有多个子ViewGroup和View。
4、在XML中引用一个id,使用@id/id_name这种语法;需要在XML中定义一个id,要使用@+id/id_name这种语法。
5、android:layout_height指定了当前元素的高度; 
    android:layout_width指定了当前元素的宽度;
    android:match_parent表示让当前元素和父元素一样宽;
    android:wrap_content表示当前元素的高度只要能刚好包含里面的内容就行了;
    android:text指定了元素中显示的文字内容;
    android:lable指定活动中标题栏的内容,标题栏是显示在活动最顶部的。
6、gravity和Layout_gravity的区别。
     LinearLayout有两个非常相似的属性:android:gravity与android:layout_gravity。他们的区别在 于:android:gravity用于设置View组件的对齐方式,而android:layout_gravity用于设置Container组件的 对齐方式。
     举个例子,我们可以通过设置android:gravity="center"来让EditText中的文字在EditText组件中居中显示;同时我们设置EditText的android:layout_gravity="right"来让EditText组件在LinearLayout中居中显示。
7、Activity的四种基本状态分别是哪些?
     运行态(Running)、暂停态(Paused)、停止态(Stopped)、终止态(Destroyed)。
8、Android中的六大布局分别是什么?
     绝对布局(AbsoluteLayout)、相对布局(RelativeLayout)、线性布局(LinearLayout)、帧布局(FrameLayout)、表格布局(TableLayout)、网格布局(GridLayout)。
9、padding和margin的区别。
    padding填充的意思,指的是view中的content与view边缘的距离,类似文本中的indent而margin表示的是view的左边缘与parent view的左边缘的距离,margin一般用来描述控件间位置关系,而padding一般描述控件内容和控件的位置关系。
    简单,padding是站在父 view的角度描述问题,它规定它里面的内容必须与这个父view边界的距离。margin则是站在自己的角度描述问题,规定自己和其他(上下左右)的 view之间的距离,如果同一级只有一个view,那么它的效果基本上就和padding一样了。
10、相对布局中只能设为boolean值的属性
 android:layout_centerHorizontal——控制该子组件是否位于布局容器的水平居中;
 android:layout_centerVertical——控制该子组件是否位于布局容器的垂直居中;
 android:layout_centerInParent——控制该子组件是否位于布局容器的中央位置;
 android:layout_alignParentBottom——控制该子组件是否与布局容器底端对齐;
 android:layout_alignParentLeft——控制该子组件是否与布局容器左边对齐;
 android:layout_alignParentRight——控制该子组件是否与布局容器右边对齐;
 android:layout_alignParentTop——控制该子组件是否与布局容器顶端对齐;
11、相对布局中只能设为其他UI组件ID的属性
 android:layout_toRightOf——控制该子组件位于给出ID组件的右侧;
 android:layout_toLeftOf——控制该子组件位于给出ID组件的左侧;
 android:layout_above——控制该子组件位于给出ID组件的上方;
 android:layout_below——控制该子组件位于给出ID组件的下方;
 android:layout_alignTop——控制该子组件位于给出ID组件的上边界对齐;
 android:layout_alignBottom——控制该子组件位于给出ID组件的下边界对齐;
 android:layout_alignLeft——控制该子组件位于给出ID组件的左边界对齐;
 android:layout_alignRight——控制该子组件位于给出ID组件的右边界对齐;

原文地址:https://www.cnblogs.com/android-blogs/p/5684469.html