Android中UI组件android:layout_gravity属性的使用

本文详细介绍了如何使用android:layout_gravity属性在Android UI布局中精确控制按钮的位置,并通过实例展示了如何将按钮放置在屏幕右侧。

在Android的UI中,android:layout_gravity属性是来控制组件位于所在布局中的位置。例如:想要一个Button位于屏幕的右边,这如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" ><!-- 注意这个LinearLayout的android:orientation属性是vertical -->

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:text="Button" />
    </LinearLayout>

</LinearLayout>

得到如下效图:



注意:这里的Button是位于一个垂直的LinearLayout中,若直接位于水平的LinearLayout中,则该属性无法使Button位于屏幕右边。

我说了只要相对分布不要擅自修改:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp" android:background="#F5F5F5"> <LinearLayout android:layout_width="396dp" android:layout_height="22dp" android:background="#E0E0E0" android:gravity="center_vertical" android:orientation="horizontal"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end" android:orientation="horizontal"> <ImageView android:layout_width="16dp" android:layout_height="16dp" android:contentDescription="Signal" android:src="@drawable/ic_signal" /> <ImageView android:layout_width="16dp" android:layout_height="16dp" android:layout_marginLeft="4dp" android:contentDescription="Battery" android:src="@drawable/ic_battery" /> </LinearLayout> </LinearLayout> <ImageView android:layout_width="48dp" android:layout_height="48dp" android:src="@drawable/Deco_App" android:contentDescription="Deco Logo" android:layout_gravity="center" android:layout_marginVertical="16dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Welcome to Deco" android:textSize="20sp" android:textStyle="bold" android:textColor="#666666" android:layout_gravity="center" android:layout_marginBottom="16dp"/> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="I accept the Terms of Use and confirm that I have fully read and understood the Privacy Policy." android:textSize="12sp" android:textColor="#666666" android:buttonTint="#00C4CC" android:layout_marginBottom="8dp"/> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="I confirm to join the User Experience Improvement Program. I understand that I can opt out of the program any time." android:textSize="14sp" android:textColor="#666666" android:buttonTint="#00C4CC" android:layout_marginBottom="16dp"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Continue" android:textColor="#FFFFFF" android:background="@drawable/rounded_button" android:layout_gravity="center" android:textSize="16sp" android:layout_marginBottom="8dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Disagree and Quit" android:layout_gravity="center" android:textSize="14sp" android:textColor="#00C4CC" /> </LinearLayout>
08-01
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <com.example.styledome.FullScreenVideoView android:id="@+id/video" android:layout_width="@dimen/dp_640" android:layout_height="@dimen/dp_370" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="@dimen/dp_370" android:layout_toRightOf="@id/video" android:orientation="vertical" android:background="@mipmap/bg_weather" > <TextView android:id="@+id/tv_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white" android:textSize="@dimen/sp_23" android:text="2025-06-09" android:layout_alignParentRight="true" android:layout_gravity="center" android:layout_marginTop="@dimen/dp_23" /> <TextView android:id="@+id/tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white" android:text="7:00" android:textSize="@dimen/sp_40" android:layout_gravity="center" android:layout_marginTop="@dimen/dp_17" /> <ImageView android:id="@+id/iv_image" android:layout_width="@dimen/dp_130" android:layout_height="@dimen/dp_91" android:layout_gravity="center" android:layout_marginTop="@dimen/dp_9" android:src="@mipmap/duoyun" /> <TextView android:id="@+id/tv_weather" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white" android:textSize="@dimen/sp_30" android:layout_gravity="center" android:text="晴转多云" android:layout_marginTop="@dimen/dp_19" /> <TextView android:id="@+id/tv_temperature" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white" android:textSize="@dimen/sp_60" android:layout_gravity="center" android:text="24" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center" > <TextView android:id="@+id/tv_week" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="5dp" android:textColor="@color/white" android:visibility="gone" android:textSize="11sp" /> </LinearLayout> </LinearLayout> </RelativeLayout> <!-- <RelativeLayout android:layout_width="wrap_content" android:layout_height="@dimen/dp_67"> <ImageView android:layout_width="@dimen/dp_34" android:layout_height="@dimen/dp_31" android:layout_marginTop="@dimen/dp_16" android:layout_marginLeft="@dimen/dp_27" android:src="@mipmap/icon_bulletin" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@mipmap/bg_bulletin" android:layout_marginLeft="@dimen/dp_39" android:text="公交出行,节能减排,保护环境人人有责!" android:textColor="@color/white" android:textSize="@dimen/sp_36" android:gravity="center" /> </RelativeLayout>--> <com.example.styledome.VerticalMarqueeTextView android:id="@+id/tv_marquee" android:layout_width="40dp" android:layout_height="140dp" android:layout_gravity="top|start" android:background="#e0e0e0" android:textColor="#000" android:textSize="16sp" /> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rec" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_10" android:layout_marginLeft="@dimen/dp_16" android:layout_marginRight="@dimen/dp_16" android:layout_marginBottom="@dimen/dp_11" /> </LinearLayout>在所有布局值上显示 <com.example.styledome.VerticalMarqueeTextView android:id="@+id/tv_marquee" android:layout_width="40dp" android:layout_height="140dp" android:layout_gravity="top|start" android:background="#e0e0e0" android:textColor="#000" android:textSize="16sp" />
07-16
combined_qs_header.xml <androidx.constraintlayout.motion.widget.MotionLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/split_shade_status_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="@dimen/split_shade_header_min_height" android:clickable="false" android:focusable="true" android:paddingLeft="@dimen/qs_panel_padding" android:paddingRight="@dimen/qs_panel_padding" android:visibility="gone" android:theme="@style/Theme.SystemUI.QuickSettings.Header" app:layoutDescription="@xml/combined_qs_header_scene"> <androidx.constraintlayout.widget.Guideline android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/center" app:layout_constraintGuide_percent="0.5" android:orientation="vertical" /> <com.android.systemui.statusbar.policy.Clock android:id="@+id/clock" android:layout_width="wrap_content" android:layout_height="0dp" android:gravity="start|center_vertical" android:paddingStart="@dimen/status_bar_left_clock_starting_padding" android:paddingEnd="@dimen/status_bar_left_clock_end_padding" android:singleLine="true" android:textAppearance="@style/TextAppearance.QS.Status" /> <com.android.systemui.statusbar.policy.DateView android:id="@+id/date" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_gravity="start|center_vertical" android:gravity="center_vertical" android:singleLine="true" android:textAppearance="@style/TextAppearance.QS.Status" app:datePattern="@string/abbrev_wday_month_day_no_year_alarm" /> <include android:id="@+id/carrier_group" layout="@layout/qs_carrier_group" app:layout_constraintHeight_min="@dimen/split_shade_header_min_height" android:minHeight="@dimen/split_shade_header_min_height" app:layout_constraintWidth_min="48dp" android:layout_width="0dp" android:layout_height="0dp" app:layout_constrainedWidth="true" android:layout_gravity="end|center_vertical" android:layout_marginStart="8dp" app:layout_constraintStart_toEndOf="@id/date" app:layout_constraintEnd_toStartOf="@id/statusIcons" app:layout_constraintTop_toTopOf="@id/clock" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="1" /> <com.android.systemui.statusbar.phone.StatusIconContainer android:id="@+id/statusIcons" app:layout_constraintHeight_min="@dimen/split_shade_header_min_height" android:paddingEnd="@dimen/signal_cluster_battery_padding" android:layout_width="wrap_content" android:layout_height="48dp" app:layout_constraintStart_toEndOf="@id/carrier_group" app:layout_constraintEnd_toStartOf="@id/batteryRemainingIcon" app:layout_constraintTop_toTopOf="@id/clock" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="1" /> <com.android.systemui.battery.BatteryMeterView android:id="@+id/batteryRemainingIcon" android:layout_width="wrap_content" android:layout_height="48dp" app:layout_constraintHeight_min="@dimen/split_shade_header_min_height" app:textAppearance="@style/TextAppearance.QS.Status" app:layout_constraintStart_toEndOf="@id/statusIcons" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@id/clock" app:layout_constraintBottom_toBottomOf="parent" /> </androidx.constraintlayout.motion.widget.MotionLayout> 解析一下
08-22
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/bg_light" tools:context=".ui.activity.ServiceCategoryActivity"> <!-- 顶部状态栏占位 --> <View android:id="@+id/status_bar_placeholder" android:layout_width="match_parent" android:layout_height="0dp" android:background="@android:color/white" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHeight_percent="0.07" /> <!-- 顶部导航栏 --> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@android:color/white" android:elevation="4dp" app:layout_constraintTop_toBottomOf="@id/status_bar_placeholder" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical"> <!-- 返回按钮 --> <ImageButton android:id="@+id/back_button" android:layout_width="48dp" android:layout_height="match_parent" android:background="@null" android:src="@drawable/ic_chevron_right" android:rotation="180" android:tint="@color/text_primary" android:contentDescription="返回" /> <!-- 标题 --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="服务" android:textSize="18sp" android:textColor="@color/text_primary" android:fontFamily="sans-serif-black" /> </RelativeLayout> </androidx.appcompat.widget.Toolbar> <!-- 主要内容区域 --> <androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="0dp" app:layout_constraintTop_toBottomOf="@id/toolbar" app:layout_constraintBottom_toBottomOf="parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <!-- 顶部搜索栏和门店选择 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/white" android:padding="16dp" android:orientation="horizontal" android:gravity="center_vertical"> <!-- 搜索框 --> <LinearLayout android:id="@+id/search_container" android:layout_width="0dp" android:layout_height="40dp" android:layout_weight="1" android:background="@drawable/search_background" android:gravity="center_vertical" android:paddingHorizontal="12dp" android:orientation="horizontal"> <ImageView android:layout_width="20dp" android:layout_height="20dp" android:src="@drawable/ic_search" android:tint="@color/text_secondary" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:text="搜索服务项目..." android:textSize="14sp" android:textColor="@color/text_secondary" /> </LinearLayout> <!-- 选择门店按钮 --> <LinearLayout android:id="@+id/store_select_btn" android:layout_width="wrap_content" android:layout_height="40dp" android:background="@drawable/search_background" android:gravity="center_vertical" android:paddingHorizontal="12dp" android:orientation="horizontal" android:layout_marginLeft="8dp"> <ImageView android:layout_width="20dp" android:layout_height="20dp" android:src="@drawable/ic_map_marker" android:tint="@color/primary" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6dp" android:text="选择门店" android:textSize="14sp" android:textColor="@color/text_primary" /> </LinearLayout> </LinearLayout> <!-- 服务分类区域 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:orientation="vertical"> <androidx.cardview.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="16dp" app:cardElevation="4dp" app:cardBackgroundColor="@android:color/white"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="24dp" android:orientation="vertical"> <!-- 标题 --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="服务分类" android:textSize="18sp" android:textColor="@color/text_primary" android:fontFamily="sans-serif-black" android:layout_marginBottom="16dp" /> <!-- 分类网格 --> <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="2" android:rowCount="2" <!-- 洗护服务 --> <LinearLayout android:id="@+id/category_grooming" android:layout_width="0dp" android:layout_height="100dp" android:layout_columnWeight="1" android:background="@drawable/service_entrance_background" android:orientation="horizontal" android:gravity="center_vertical" android:padding="16dp" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground"> <LinearLayout android:layout_width="48dp" android:layout_height="48dp" android:background="@android:color/white" android:alpha="0.2" android:gravity="center" android:layout_marginRight="12dp"> <ImageView android:layout_width="24dp" android:layout_height="24dp" android:src="@drawable/ic_paw" android:tint="@android:color/white" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="洗护服务" android:textSize="16sp" android:textColor="@android:color/white" android:fontFamily="sans-serif-medium" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="专业清洁护理" android:textSize="12sp" android:textColor="@android:color/white" android:alpha="0.9" /> </LinearLayout> </LinearLayout> <!-- 美容造型 --> <LinearLayout android:id="@+id/category_beauty" android:layout_width="0dp" android:layout_height="100dp" android:layout_columnWeight="1" android:background="@drawable/shop_entrance_background" android:orientation="horizontal" android:gravity="center_vertical" android:padding="16dp" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground"> <LinearLayout android:layout_width="48dp" android:layout_height="48dp" android:background="@android:color/white" android:alpha="0.2" android:gravity="center" android:layout_marginRight="12dp"> <ImageView android:layout_width="24dp" android:layout_height="24dp" android:src="@drawable/ic_cut" android:tint="@android:color/white" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="美容造型" android:textSize="16sp" android:textColor="@android:color/white" android:fontFamily="sans-serif-medium" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="时尚造型设计" android:textSize="12sp" android:textColor="@android:color/white" android:alpha="0.9" /> </LinearLayout> </LinearLayout> <!-- 寄养服务 --> <LinearLayout android:id="@+id/category_boarding" android:layout_width="0dp" android:layout_height="100dp" android:layout_columnWeight="1" android:background="@drawable/pets_entrance_background" android:orientation="horizontal" android:gravity="center_vertical" android:padding="16dp" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground"> <LinearLayout android:layout_width="48dp" android:layout_height="48dp" android:background="@android:color/white" android:alpha="0.2" android:gravity="center" android:layout_marginRight="12dp"> <ImageView android:layout_width="24dp" android:layout_height="24dp" android:src="@drawable/ic_home" android:tint="@android:color/white" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="寄养服务" android:textSize="16sp" android:textColor="@android:color/white" android:fontFamily="sans-serif-medium" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="温馨托管照顾" android:textSize="12sp" android:textColor="@android:color/white" android:alpha="0.9" /> </LinearLayout> </LinearLayout> <!-- 乐园活动 --> <LinearLayout android:id="@+id/category_playground" android:layout_width="0dp" android:layout_height="100dp" android:layout_columnWeight="1" android:background="@drawable/stores_entrance_background" android:orientation="horizontal" android:gravity="center_vertical" android:padding="16dp" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground"> <LinearLayout android:layout_width="48dp" android:layout_height="48dp" android:background="@android:color/white" android:alpha="0.2" android:gravity="center" android:layout_marginRight="12dp"> <ImageView android:layout_width="24dp" android:layout_height="24dp" android:src="@drawable/ic_order" android:tint="@android:color/white" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="乐园活动" android:textSize="16sp" android:textColor="@android:color/white" android:fontFamily="sans-serif-medium" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="互动娱乐体验" android:textSize="12sp" android:textColor="@android:color/white" android:alpha="0.9" /> </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout> </androidx.core.widget.NestedScrollView> <!-- 精选服务推荐 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingHorizontal="16dp" android:paddingBottom="16dp" android:orientation="vertical" tools:ignore="MissingConstraints"> <!-- 标题和查看更多 --> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:paddingVertical="8dp"> <TextView android:id="@+id/featured_services_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="精选服务" android:textSize="18sp" android:textColor="@color/text_primary" android:fontFamily="sans-serif-black" /> <TextView android:id="@+id/more_featured_services" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:text="查看更多" android:textSize="14sp" android:textColor="@color/primary" android:fontFamily="sans-serif-medium" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground" /> </RelativeLayout> <!-- 精选服务列表 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <!-- 精选服务1 --> <androidx.cardview.widget.CardView android:id="@+id/featured_service_1" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="16dp" app:cardElevation="2dp" app:cardBackgroundColor="@android:color/white" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:orientation="horizontal" android:gravity="center_vertical"> <ImageView android:layout_width="64dp" android:layout_height="64dp" android:src="@drawable/service_image_placeholder" android:scaleType="centerCrop" android:layout_marginRight="12dp" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="专业洗护服务" android:textSize="16sp" android:textColor="@color/text_primary" android:fontFamily="sans-serif-medium" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="深层清洁,让爱宠焕然一新" android:textSize="12sp" android:textColor="@color/text_secondary" android:layout_marginVertical="4dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="宠爱宠物医院" android:textSize="12sp" android:textColor="@color/text_secondary" /> </LinearLayout> </LinearLayout> </androidx.cardview.widget.CardView> <!-- 精选服务2 --> <androidx.cardview.widget.CardView android:id="@+id/featured_service_2" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="16dp" app:cardElevation="2dp" app:cardBackgroundColor="@android:color/white" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:orientation="horizontal" android:gravity="center_vertical"> <ImageView android:layout_width="64dp" android:layout_height="64dp" android:src="@drawable/service_image_placeholder" android:scaleType="centerCrop" android:layout_marginRight="12dp" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="美容造型" android:textSize="16sp" android:textColor="@color/text_primary" android:fontFamily="sans-serif-medium" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="专业造型师,打造时尚爱宠" android:textSize="12sp" android:textColor="@color/text_secondary" android:layout_marginVertical="4dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="萌宠造型屋" android:textSize="12sp" android:textColor="@color/text_secondary" /> </LinearLayout> </LinearLayout> </androidx.cardview.widget.CardView> <!-- 精选服务3 --> <androidx.cardview.widget.CardView android:id="@+id/featured_service_3" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="16dp" app:cardElevation="2dp" app:cardBackgroundColor="@android:color/white" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:orientation="horizontal" android:gravity="center_vertical"> <ImageView android:layout_width="64dp" android:layout_height="64dp" android:src="@drawable/service_image_placeholder" android:scaleType="centerCrop" android:layout_marginRight="12dp" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="豪华寄养" android:textSize="16sp" android:textColor="@color/text_primary" android:fontFamily="sans-serif-medium" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="24小时看护,如家般温暖" android:textSize="12sp" android:textColor="@color/text_secondary" android:layout_marginVertical="4dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="温馨宠物之家" android:textSize="12sp" android:textColor="@color/text_secondary" /> </LinearLayout> </LinearLayout> </androidx.cardview.widget.CardView> <!-- 精选服务4 --> <androidx.cardview.widget.CardView android:id="@+id/featured_service_4" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="16dp" app:cardElevation="2dp" app:cardBackgroundColor="@android:color/white" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:orientation="horizontal" android:gravity="center_vertical"> <ImageView android:layout_width="64dp" android:layout_height="64dp" android:src="@drawable/service_image_placeholder" android:scaleType="centerCrop" android:layout_marginRight="12dp" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="乐园互动" android:textSize="16sp" android:textColor="@color/text_primary" android:fontFamily="sans-serif-medium" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="社交游戏,快乐成长时光" android:textSize="12sp" android:textColor="@color/text_secondary" android:layout_marginVertical="4dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="宠物乐园" android:textSize="12sp" android:textColor="@color/text_secondary" /> </LinearLayout> </LinearLayout> </androidx.cardview.widget.CardView> </LinearLayout> </LinearLayout> <!-- 热门门店推荐 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:orientation="vertical" tools:ignore="MissingConstraints"> <!-- 标题和查看更多 --> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:paddingVertical="8dp"> <TextView android:id="@+id/popular_stores_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="热门门店" android:textSize="18sp" android:textColor="@color/text_primary" android:fontFamily="sans-serif-black" /> <TextView android:id="@+id/more_popular_stores" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:text="查看更多" android:textSize="14sp" android:textColor="@color/primary" android:fontFamily="sans-serif-medium" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground" /> </RelativeLayout> <!-- 热门门店列表 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <!-- 热门门店1 --> <androidx.cardview.widget.CardView android:id="@+id/popular_store_1" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="16dp" app:cardElevation="2dp" app:cardBackgroundColor="@android:color/white" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:orientation="horizontal" android:gravity="center_vertical"> <ImageView android:layout_width="64dp" android:layout_height="64dp" android:src="@drawable/store_image_placeholder" android:scaleType="centerCrop" android:layout_marginRight="12dp" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="宠爱宠物医院" android:textSize="16sp" android:textColor="@color/text_primary" android:fontFamily="sans-serif-medium" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingVertical="4dp"> <!-- 评分 --> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center_vertical"> <ImageView android:layout_width="12dp" android:layout_height="12dp" android:src="@drawable/ic_star" android:tint="@color/yellow_400" /> <ImageView android:layout_width="12dp" android:layout_height="12dp" android:src="@drawable/ic_star" android:tint="@color/yellow_400" /> <ImageView android:layout_width="12dp" android:layout_height="12dp" android:src="@drawable/ic_star" android:tint="@color/yellow_400" /> <ImageView android:layout_width="12dp" android:layout_height="12dp" android:src="@drawable/ic_star" android:tint="@color/yellow_400" /> <ImageView android:layout_width="12dp" android:layout_height="12dp" android:src="@drawable/ic_star" android:tint="@color/yellow_400" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4dp" android:text="4.9分 · 1.2km" android:textSize="12sp" android:textColor="@color/text_secondary" /> </LinearLayout> </RelativeLayout> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="洗护 · 美容 · 医疗 · 寄养" android:textSize="12sp" android:textColor="@color/text_secondary" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/store_status_background" android:paddingHorizontal="8dp" android:paddingVertical="4dp" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="营业中" android:textSize="10sp" android:textColor="@color/primary" /> </LinearLayout> </LinearLayout> </androidx.cardview.widget.CardView> <!-- 热门门店2 --> <androidx.cardview.widget.CardView android:id="@+id/popular_store_2" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="16dp" app:cardElevation="2dp" app:cardBackgroundColor="@android:color/white" android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:orientation="horizontal" android:gravity="center_vertical"> <ImageView android:layout_width="64dp" android:layout_height="64dp" android:src="@drawable/store_image_placeholder" android:scaleType="centerCrop" android:layout_marginRight="12dp" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="萌宠造型屋" android:textSize="16sp" android:textColor="@color/text_primary" android:fontFamily="sans-serif-medium" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingVertical="4dp"> <!-- 评分 --> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center_vertical"> <ImageView android:layout_width="12dp" android:layout_height="12dp" android:src="@drawable/ic_star" android:tint="@color/yellow_400" /> <ImageView android:layout_width="12dp" android:layout_height="12dp" android:src="@drawable/ic_star" android:tint="@color/yellow_400" /> <ImageView android:layout_width="12dp" android:layout_height="12dp" android:src="@drawable/ic_star" android:tint="@color/yellow_400" /> <ImageView android:layout_width="12dp" android:layout_height="12dp" android:src="@drawable/ic_star" android:tint="@color/yellow_400" /> <ImageView android:layout_width="12dp" android:layout_height="12dp" android:src="@drawable/ic_star_outline" android:tint="@color/yellow_400" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4dp" android:text="4.7分 · 800m" android:textSize="12sp" android:textColor="@color/text_secondary" /> </LinearLayout> </RelativeLayout> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="美容 · 造型 · 洗护" android:textSize="12sp" android:textColor="@color/text_secondary" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/store_status_background" android:paddingHorizontal="8dp" android:paddingVertical="4dp" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="营业中" android:textSize="10sp" android:textColor="@color/primary" /> </LinearLayout> </LinearLayout> </androidx.cardview.widget.CardView> </LinearLayout> </LinearLayout> <!-- 底部间距 --> <View android:layout_width="match_parent" android:layout_height="40dp" tools:ignore="MissingConstraints" /> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.core.widget.NestedScrollView> </androidx.constraintlayout.widget.ConstraintLayout>优化一下
最新发布
12-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值