五天学习android的总结_布局,自适应,自己设定标题栏等

大家好,我是神帝

今天是我学习android的第五天,因为直接要做app,所以在压力下学到了很多,下面是我四天内学的内容的大概

布局:

Android有所谓的五大布局

布局的使用 在布局文件中(main_activity.xml)

<Relativety
    android:width="wrap_content"    设置宽
    android:height="wrap_content"    设置高
    >
    <!-- 组件 -->
    <Button .../>  

</Relativety>

相对布局(RelativeLayout)
    默认是与屏幕的左上角对齐,优点是可以设置在某个组件的上/下/左/右方

    缺点是不好进行自适应,本人用此布局需要自适应的话用代码进行的,在下面会说到.

线性布局(LinearLayout)
    水平排列或者垂直排列,优点是可以组件都是从上往下排列或者从左往右,

    使用android:orientation=""进行控制horizontal代表从左往右,vertical代表从上往下,

    如果需要自适应的话,我一般都是用android:weight="权重 数字"来设置此组件在这个布局内的权重,占比,比如我有两个button

    在线性布局里,两个button都设置了android:weight="",里面的值相同 也就是1:1 则这两个按钮会以一样的大小填充此布局

    如果要用android:weight的话,水平排列 则要把width设为0dp,垂直排列则把height设为0dp,并且所有组件都需要设置这个属性

表格布局(TableLayout)
    表格,可以指定行列
    TableRow代表一行

    表格布局中嵌套TableRow布局,代表一行,第二个TableRow则代表第二行.

    在属性中 * 代表所有 1代表第一列,逗号隔开

    android:stretchColumns        设置可伸展的列.该列可以向行方向伸展,最多可占据一整行
    android:shrinkColumns         设置可收缩的列.当该列子控件的内容太多,已经挤满所在行,那么该子控件的内容将往列方向显示
    android:collapseColumns     设置要隐藏的列.

绝对布局(AbsoluteLayout)
        控件想放哪里就放哪里,需要指定x,y坐标,但是手机屏幕类型太多了,
            要自适应需要动态的计算

帧布局(FrameLayout)
        在帧布局里,可以控制控件的显示与隐藏,帧布局里的组件类似于html中的div
        这个布局与相对布局一样,不过后续添加的控件会覆盖前一个

自适应--获取屏幕大小 给组件指定宽高来进行自适应

    在代码中 MainActivity类中获取屏幕的大小

    

int width,height;//宽 高

DisplayMetrics metrics = new DisplayMetrics;//屏幕的大小
//将获取的信息保存到metrics中
getWindowManager().getDefaultDisplay().getMetrics(metrics);
width = metrics.widthPixels;
height = metrics.heightPixels;

   然后根据屏幕大小设置组件的大小

   使用getLayoutParams()方法返回一个此组件的Params 可以用来设置组件的大小

去掉标题-自定义标题栏

   去掉标题很简单

   只需要在清单文件-AndroidManifest.xml中的android:theme 属性的值设置为@style/Theme.AppCompat.Light.NoActionBar

   这样,app的自带的标题栏就消失了,然后我们可能会需要自己定义一个标题栏

   通常,我们可以用工具栏组件(Toolbar) 来代替标题栏,工具栏是在v7中新增的

    <android.support.v7.widget.Toolbar/>

   对于工具栏 我们不需要太多的设置,只需要背景和宽高就行了,然后我们需要在代码中将工具栏设置成标题栏

   

setSupportActionBar(Toolbar);//设置一个工具栏作为此活动窗口的应用栏
getSupportActionBar();//返回此活动窗口的应用栏

   将工具栏设置成标题栏后,我们可以直接使用之前设置标题栏的标题setTitle();等方法来设置我们自己的标题栏.

   以上就是我的总结,如有哪有错请指出.

发布了38 篇原创文章 · 获赞 23 · 访问量 9083

猜你喜欢

转载自blog.csdn.net/qq_41806966/article/details/89714883