android中layout_gravity 和 gravity 的区别以及 失效原因

本文详细解释了Android开发中layout_gravity和gravity的区别及其应用场景。通过具体示例说明如何使用这两个属性来实现控件的精确布局。

android 中的 layout_gravity 和 gravity 的区别:

运用到 gravity的情况:

1)设置Button里面 的text 靠右: android:gravity="right"

2)设置 LinearLayout中的Button 靠右显示: android:gravity="right"

也就是说A是父控件,B是子控件,想让B相对于A 的位置调整,那么就在父控件中用属性 gravity。


运用到 layout_gravity的情况:

在LinearLayout里面有个Button,当你想只改变Button的属性达到效果:Button位于LinearLayout的右下角,

那么你这个时候在Button里面增加的属性值就是: android:layout_gravity="right|bottom"


layout_gravity失效的原因:

 layout_gravity要依赖于父控件里面的属性,如上面的例子,LinearLayout中有个Button:

1)如果LinearLayout中的 android:orientation="horizontal",那么也就是说在LinearLayout中子控件
就是以水平方向来安放的,这个由LinearLayout来控制;

2) 你想在Button中改变Button相对于LinearLayout的位置,只能改变其上下位置,而不能改变水平方向的位置,
即 android:layout_gravity="" (top,bottom都可以)(left,right不可以)同理知,当LinearLayout设置为vertical时,
Button的 layout_gravity 只能设置水平方向的属性。


<?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/max_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/bg_blue" tools:context=".MainActivity"> <View android:id="@+id/mask_view" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/black" android:alpha="0" /> <ScrollView android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingStart="10dp" android:paddingEnd="10dp"> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone" android:id="@+id/top_bulb_off"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/back_white" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Smart Lamp" android:textSize="18sp" android:textStyle="bold" android:textColor="@color/white" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/home_setting_on" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="2dp" android:gravity="center_horizontal" android:orientation="horizontal"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:src="@drawable/location_white" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Bedroom" android:textColor="@color/white" android:textSize="14sp" /> </LinearLayout> </LinearLayout> </FrameLayout> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="visible" android:id="@+id/top_bulb_on"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/home_back" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/preset" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Smart Lamp" android:textSize="18sp" android:textStyle="bold" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <ImageView android:id="@+id/setting" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/home_setting" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="2dp" android:gravity="center_horizontal" android:orientation="horizontal"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:src="@drawable/location_gray" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Bedroom" android:textColor="@color/gray333" android:textSize="14sp" /> </LinearLayout> </LinearLayout> </FrameLayout> <LinearLayout android:id="@+id/button_group" android:layout_width="match_parent" android:layout_height="55dp" android:layout_marginStart="4dp" android:layout_marginTop="30dp" android:gravity="center_vertical" android:orientation="horizontal" android:clipToPadding="false" android:clipChildren="false"> <com.google.android.material.button.MaterialButton android:id="@+id/auto_button" android:layout_width="40dp" android:layout_height="40dp" android:background="@drawable/white_button" android:gravity="center" android:padding="0dp" android:text="Auto" android:textColor="@color/gray66" android:textSize="8sp" app:backgroundTint="@null" /> <View android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"/> <com.google.android.material.button.MaterialButton android:id="@+id/white_button" android:layout_width="40dp" android:layout_height="40dp" android:background="@drawable/white_button_selector" android:gravity="center" android:padding="0dp" app:backgroundTint="@null" app:icon="@drawable/color_edit" app:iconGravity="textEnd" app:iconPadding="0dp" app:iconTint="@color/black" /> <View android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"/> <com.google.android.material.button.MaterialButton android:id="@+id/orange_button" android:layout_width="40dp" android:layout_height="40dp" android:background="@drawable/orange_button_selector" android:layout_marginStart="10dp" android:layout_marginEnd="10dp" android:gravity="center" android:padding="0dp" app:backgroundTint="@null" app:iconGravity="textEnd" app:iconPadding="0dp" app:iconTint="@color/black" /> <View android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"/> <com.google.android.material.button.MaterialButton android:id="@+id/deepblue_button" android:layout_width="40dp" android:layout_height="40dp" android:background="@drawable/deepblue_button_selector" android:gravity="center" android:padding="0dp" app:backgroundTint="@null" app:iconGravity="textEnd" app:iconPadding="0dp" app:iconTint="@color/black" /> <View android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"/> <com.google.android.material.button.MaterialButton android:id="@+id/blue_button" android:layout_width="40dp" android:layout_height="40dp" android:background="@drawable/blue_button_selector" android:gravity="center" android:padding="0dp" app:backgroundTint="@null" app:iconGravity="textEnd" app:iconPadding="0dp" app:iconTint="@color/black" /> <View android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"/> <com.google.android.material.button.MaterialButton android:id="@+id/red_button" android:layout_width="40dp" android:layout_height="40dp" android:background="@drawable/red_button_selector" android:gravity="center" android:padding="0dp" app:backgroundTint="@null" app:iconGravity="textEnd" app:iconPadding="0dp" app:iconTint="@color/black" /> <View android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.3"/> </LinearLayout> <TextView android:id="@+id/percent_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="15dp" android:text="100%" android:textSize="18sp" /> <TextView android:id="@+id/off" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="15dp" android:text="OFF" android:textColor="@color/white" android:textSize="20sp" /> <FrameLayout android:id="@+id/bulb_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="50dp"> <ImageView android:id="@+id/blub_dark" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:src="@drawable/blub_dark"/> <ImageView android:id="@+id/blub_max_init" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:src="@drawable/bulb_light" /> </FrameLayout> <ImageView android:id="@+id/switch_on" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="30dp" android:src="@drawable/switch_on" /> </LinearLayout> </ScrollView> <LinearLayout android:id="@+id/bottom_sheet" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxHeight="800dp" android:orientation="vertical" app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"> <androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="wrap_content" android:fillViewport="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:id="@+id/pull_up" android:layout_width="match_parent" android:layout_height="40dp" android:layout_gravity="center_horizontal" android:paddingTop="20dp" android:background="@color/white" android:src="@drawable/pull"/> <LinearLayout android:layout_width="match_parent" android:layout_height="800dp" android:background="@color/white" android:orientation="vertical"> <!-- 横向菜单 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_marginBottom="20dp" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/transparent" android:text="Mode" android:textColor="@color/black" android:drawableTop="@drawable/mode"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/transparent" android:text="Schedule" android:textColor="@color/black" android:drawableTop="@drawable/schedule"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/transparent" android:text="Away" android:textColor="@color/black" android:drawableTop="@drawable/away"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/transparent" android:text="Timer" android:textColor="@color/black" android:drawableTop="@drawable/timer"/> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="10dp" android:background="@color/bg_gray"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingStart="34dp" android:paddingTop="20dp" android:paddingBottom="25dp" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Today" android:textColor="@color/gray_99999" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:orientation="horizontal"> <!-- 第一组 --> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/gray333" android:textStyle="bold" android:text="12.1" android:textSize="23sp"/> <TextView android:layout_marginStart="3dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="12sp" android:textColor="@color/gray333" android:text="h"/> </LinearLayout> <!-- 第二组 --> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/gray333" android:textStyle="bold" android:text="125.1" android:textSize="23sp"/> <TextView android:layout_marginStart="3dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="12sp" android:textColor="@color/gray333" android:text="Kmh"/> </LinearLayout> <!-- 第三组 --> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/gray333" android:textStyle="bold" android:text="992.3" android:textSize="23sp"/> <TextView android:layout_marginStart="3dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="12sp" android:textColor="@color/gray333" android:text="Kmh"/> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center_horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Runtime" android:textColor="@color/gray_99999" android:layout_weight="1" android:textSize="14sp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Usage" android:textColor="@color/gray_99999" android:layout_weight="1" android:textSize="14sp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Saving" android:textColor="@color/gray_99999" android:layout_weight="1" android:textSize="14sp"/> </LinearLayout> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="10dp" android:background="@color/bg_gray"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="18dp" android:layout_marginEnd="18dp" android:layout_marginTop="15dp" android:layout_marginBottom="15dp" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Favorite" android:textColor="@color/gray333" android:layout_weight="1" android:textStyle="normal"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:src="@drawable/favorite_selector"/> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginStart="15dp" android:background="@color/gray_EB"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="18dp" android:layout_marginEnd="18dp" android:layout_marginTop="15dp" android:layout_marginBottom="15dp" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Device Sharing" android:textColor="@color/gray333" android:layout_weight="1" android:textStyle="normal"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon_shared"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="2dp" android:text="2" android:textColor="#B5BAC4" android:textSize="14sp"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/device_share"/> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginStart="15dp" android:background="@color/gray_EB"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="18dp" android:layout_marginEnd="18dp" android:layout_marginTop="15dp" android:layout_marginBottom="15dp" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="FAQ & Feedback" android:textColor="@color/gray333" android:layout_weight="1" android:textStyle="normal"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/device_share"/> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginStart="15dp" android:background="@color/gray_EB"/> </LinearLayout> </LinearLayout> </androidx.core.widget.NestedScrollView> </LinearLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>当前布局有两个问题,1.横屏时灯泡下面的按钮露不出来,即使是加了scrollView,也没办法滑到那个地方,原因不明 2.由于灯泡图片有上下滑动的动作,scroll也有,所以横屏时灯泡的滑动效果失效了,原因不明,但是竖屏以上两者问题均未发生
08-28
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值