Android开发:FrameLayout、LinearLayout、RelativeLayout布局解析

版权申诉
2 下载量 80 浏览量 更新于2024-09-10 收藏 100KB PDF 举报
本文主要介绍了Android开发中常用的三种布局——FrameLayout、LinearLayout和RelativeLayout,讨论了Android如何通过布局解决屏幕适配问题,并分析了不同布局的特点和使用场景。 在Android开发中,面对各种屏幕尺寸和分辨率,布局管理是至关重要的。不同于Web开发中的CSS和iOS开发中的UIView尺寸计算,Android提供了独特的布局系统来应对屏幕碎片化。最初,Android SDK包含了AbsoluteLayout、FrameLayout、LinearLayout、RelativeLayout和TableLayout五种布局,但AbsoluteLayout在Android 1.5版本后不再推荐使用,而TableLayout由于Fragment和新的TabLayout的流行,其重要性也在逐渐降低。 1. FrameLayout:这是最简单的布局方式。所有的子视图(View)默认都会基于FrameLayout的左上角对齐,并按照添加的顺序重叠,后面的视图会覆盖前面的视图。这种布局常用于需要一个视图完全覆盖另一个视图的情况,如显示浮动对话框或实现半透明遮罩效果。 ```xml <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <View android:layout_width="200dp" android:layout_height="200dp" <!-- ... 更多属性 --> /> <!-- 其他视图将在此基础上重叠 --> </FrameLayout> ``` 2. LinearLayout:线性布局按照垂直或水平方向排列子视图。可以设置权重(weight)来分配剩余空间,使得子视图能根据需求占据不同比例的空间。LinearLayout适用于需要按照一定顺序排列元素的场景,如列表项或者有层次的按钮栏。 ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" <!-- 或者 "horizontal" --> android:layout_width="match_parent" android:layout_height="match_parent"> <View android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" <!-- ... 更多属性 --> /> <!-- 其他视图按照指定的方向排列 --> </LinearLayout> ``` 3. RelativeLayout:相对布局允许子视图相对于其他视图的位置进行定位,提供更多的灵活性。适合于需要复杂相互依赖的视图布局,例如标题居中,按钮位于底部等布局需求。 ```xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" <!-- ... 更多属性 --> /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" <!-- ... 更多属性 --> /> <!-- 其他视图根据相对位置进行布局 --> </RelativeLayout> ``` 这三种布局是Android开发的基础,熟练掌握它们能帮助开发者构建出适应各种屏幕的用户界面。在实际项目中,开发者还会经常结合使用这些布局,通过嵌套或组合来创建更复杂的界面结构。同时,随着Android support库的更新,还有诸如ConstraintLayout等新型布局出现,它们提供了更强大的功能和更易用的界面设计工具,进一步简化了Android界面开发的复杂度。

# -*- coding: UTF-8 -*- from lib2to3.pgen2 import driver from appium import webdriver from appium.webdriver.common.appiumby import AppiumBy el1 = driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="通讯录") el1.click() el2 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.ListView/android.widget.FrameLayout[3]/android.widget.RelativeLayout") el2.click() el3 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup[1]/android.widget.TextView") el3.click() el4 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup[8]") el4.click() el5 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup[11]") el5.click()

2023-06-08 上传