关于安卓布局的小总结

1.让状态栏和导航栏变成透明的

View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
        //透明状态栏
        getWindow().setStatusBarColor(Color.TRANSPARENT);
        //透明导航栏
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

这里我们调用了getWindows().getDecorView()方法拿到了当前活动的DecorVIew,在调用它的setSystemUiVisbility()方法来改变系统的UI显示,在这里传入了View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN和View.SYSTEM_UI_FLAG_LAYOUT_STABLE就表示活动的布局会显示在状态栏上面,最后调用setStatusBarColor()方法将状态栏设置成透明色

此时系统的状态栏已经成为我们布局的一部分了,因此没有单独给它留出控件.

这是我们在合适的地方添加

android:fitsSystemWindows="true"

就表示会为系统的状态栏留出空间,

2.android.widget.Button

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <shape android:shape="rectangle">
            <!--设置背景颜色-->
            <solid android:color="#40E6E6D1" />
            <!--设置角的弧度-->
            <corners android:radius="15dp" />
            <!--设置边框以及颜色-->
            <stroke
                android:width="1dp"
                android:color="#0EF379"/>
            <!--padding Button里面的文字与Button边界的间隔-->
            <padding
                android:bottom="10dp"
                android:left="10dp"
                android:right="10dp"
                android:top="10dp"/>
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <!--设置点击之后的颜色-->
            <solid android:color="#407EEF72" />
            <!--设置点击之后角的弧度-->
            <corners android:radius="15dp" />
            <!--设置点击之后边框以及颜色-->
            <stroke
                android:width="1dp"
                android:color="#EF0A34"/>
        </shape>
    </item>
</selector>

3.sp和dp的区别

长度宽度的数值要使用dp作为单位

字体大小的数值要使用sp作为单位

sp作为字体大小单位,会随着系统的字体改变而改变,通常情况下我们还是建议使用sp作为字体的单位.除非一些特殊的情况,字体不随的系统的改变而改变,就可以使用dp

4.透明色

#00000000

5.android::textStyle="bold"

TextView在中可以定义android:textStyle="bold"来使字体显示为粗体,但是这只对英文有效,当你的TextView要显示中文的时候要在code中设置粗体的paint来实现,如下:

1 TextView title =  new TextView(context); // 或从xml导入
2  TextPaint paint = title.getPaint();
3 paint.setFakeBoldText( true); 

这样就可以显示粗体了。

5.View

View在Android中可以理解为视图.它占据屏幕上的一块矩形区域,负责提供组件绘制和时间的处理的方法

View类是所有widgets组件的基类

View类位于android.view包中;View类的子类一般都位于android.widget包中

6.ViewGroup

ViewGroup在Android中可以理解为容器。

ViewGroup类继承自View类,它是View类的扩 展,是用来容纳其他组件的容器;

ViewGroup是一个抽象类,在实际应用中使用ViewGroup的子类来作为容器的。

ViewGroup.MarginLayoutParams类 ViewGroup.LayoutParams类

ViewGroup是一个抽象类,也是其他容器类的基类。它的一些实现类有: LinearLayout(线性布局),RelativeLayout(相对布局),TableLayout(表格布局) FrameLayout(帧布局),AbsoluteLayout(绝对布局),GridLayout(网格布局)

7.layoutInflater

layoutInflater.inflate()方法似于findViewById()方法,不同点是layoutInflater.inflate()是用来找res/layout/下的XML布局文件,并且实例化;而findViewById()是找XML布局文件下的具体控件(如:Button、TextView等等)。

使用场景:
1、对于一个没有被载入或者想要动态载入的界面,都需要使用layoutInflater.inflater()来载入界面。
2、对于一个已经载入的界面,可以使用activity.findViewById()来获取界面中的控件。

猜你喜欢

转载自blog.csdn.net/qq_65337539/article/details/127534442