توسعه Hongmeng: طرح الاستیک فلکس

مقدمه
مورد کد بر اساس API13 است.
یک مؤلفه جستجو در حال نمایش است که یکی از آنها نمایش محتوای جستجوهای تاریخی است.
من معتقدم که شما اثرات فوق را کم و بیش در بسیاری از برنامه ها مشاهده کرده اید ، بنابراین چگونه می توان در Hongmeng به دست آورد؟ همچنین بسیار ساده است.
@Entry
@Component
struct Index {
@State searchList: string[] = ["程序员一鸣", "App开发干货铺", "程序员修养", "鸿蒙4.0", "HarmonyOS NEXT","开发","中","这是一个非常长的搜索内容,请须知!"]
build() {
Column() {
Text("历史搜索")
.fontSize(18)
.fontColor(Color.Black)
.fontWeight(FontWeight.Bold)
Flex({ wrap: FlexWrap.Wrap }) {
ForEach(this.searchList, (item: string) => {
Text(item)
.backgroundColor("#e8e8e8")
.padding({
left: 10,
right: 10,
top: 5,
bottom: 5
}).margin({ right: 10, bottom: 10 })
.borderRadius(5)
})
}.margin({ top: 10 })
}
.height('100%')
.width('100%')
.padding({ left: 10, right: 10 })
.alignItems(HorizontalAlign.Start)
.justifyContent(FlexAlign.Center)
}
}
فلکس چیست
تفسیر در یک جمله: به طور عمده فضای باقیمانده عناصر کودک را در کانتینر ترتیب ، تراز و تخصیص دهید.
ویژگی های اصلی انعطاف پذیری است: طرح فلکس می تواند به طور خودکار ترتیب و اندازه عناصر کودک را با توجه به اندازه ظرف تنظیم کند. جهت گیری: Flex Layout از مسیرهای آرایش افقی و عمودی پشتیبانی می کند و توسعه دهندگان می توانند با توجه به نیازهای خود روش آرایش مناسب را انتخاب کنند. تراز: طرح فلکس انواع روشهای تراز ، مانند مرکزیت ، تراز دو انتها ، تراز فاصله مساوی و غیره را فراهم می کند ، که توسعه دهندگان را برای دستیابی به اثرات مختلف طرح پیچیده تسهیل می کند.
این مفهوم دوک نخ ریسی و یک محور متقاطع است.
نحوه استفاده
استفاده ساده به شرح زیر است:
Flex({ direction: FlexDirection.Row }) {
Text('元素1')
.padding(10)
.backgroundColor(Color.Red)
Text('元素2')
.padding(10)
.backgroundColor(Color.Pink)
Text('元素3')
.padding(10)
.backgroundColor(Color.Orange)
}
جهت کنترل
از ویژگی Direction برای کنترل جهت عنصر کودک استفاده می شود.
نام | تصریح کردن |
---|---|
ردیف | محور اصلی و جهت ردیف به عنوان حالت طرح بندی سازگار است. |
رنده | طرح جهت مخالف را به جهت ردیف. |
ستون | جهت دوک نخ ریسی و ستون به عنوان حالت طرح بندی سازگار است. |
ستونی | طرح جهت مخالف ستون. |
ردیف
کد:
Flex({ direction: FlexDirection.Row }) {
Text('元素1')
.padding(10)
.backgroundColor(Color.Red)
Text('元素2')
.padding(10)
.backgroundColor(Color.Pink)
Text('元素3')
.padding(10)
.backgroundColor(Color.Orange)
}
اثر:
رنده
کد:
Flex({ direction: FlexDirection.RowReverse }) {
Text('元素1')
.padding(10)
.backgroundColor(Color.Red)
Text('元素2')
.padding(10)
.backgroundColor(Color.Pink)
Text('元素3')
.padding(10)
.backgroundColor(Color.Orange)
}
اثر:
ستون
کد:
Flex({ direction: FlexDirection.Column }) {
Text('元素1')
.padding(10)
.backgroundColor(Color.Red)
Text('元素2')
.padding(10)
.backgroundColor(Color.Pink)
Text('元素3')
.padding(10)
.backgroundColor(Color.Orange)
}
اثر:
ستونی
کد:
Flex({ direction: FlexDirection.ColumnReverse }) {
Text('元素1')
.padding(10)
.backgroundColor(Color.Red)
Text('元素2')
.padding(10)
.backgroundColor(Color.Pink)
Text('元素3')
.padding(10)
.backgroundColor(Color.Orange)
}
اثر:
ردیف ها/ستون ها
از طریق خاصیت بسته بندی ، می توانیم کنترل کنیم که آیا این یک ردیف/ستون واحد یا چند ردیف/ستون است ، و سه پارامتر برای انتخاب وجود دارد.
نام | تصریح کردن |
---|---|
نوشابه | طرح عنصر ظرف Flex یک طرح تک ردیف/ستون است و عناصر کودک تا حد امکان در ظرف محدود می شوند. هنگامی که عنصر کودک دارای تنظیماتی مانند حداقل محدودیت های اندازه است ، ظرف Flex فشرده سازی الاستیک را به آن مجبور نمی کند. |
بسته بندی کردن | عناصر Flex Container در چندین ردیف/ستون تنظیم شده اند و به کودکان اجازه داده می شود از ظرف فراتر رود. |
بسته بندی شده | عناصر ظرف فلکس در چند ردیف/ستون معکوس قرار گرفته اند و به کودکان اجازه داده می شود از ظرف فراتر رود. |
اضافه کردن ویژگی بسته بندی اجازه می دهد تا چندین ردیف/ستون ستون.
Flex({ direction: FlexDirection.Row,wrap:FlexWrap.Wrap}) {
Text('元素1')
.width(100)
.padding(10)
.backgroundColor(Color.Red)
Text('元素2')
.padding(10)
.width(100)
.backgroundColor(Color.Pink)
Text('元素3')
.padding(10)
.width(100)
.backgroundColor(Color.Orange)
Text('元素4')
.padding(10)
.width(100)
.backgroundColor(Color.Gray)
}
بیایید به اثر نگاه کنیم.
تراز
دو روش برای انجام این کار وجود دارد ، یکی جهت اصلی محور و دیگری جهت محور متقاطع است.
توجیهی
نام | تصریح کردن |
---|---|
شروع | این عنصر در انتهای سر جهت محور اصلی تراز شده است ، اولین عنصر با سر خط تراز می شود و عنصر بعدی با قسمت قبلی تراز می شود. |
مرکز | عناصر در مرکز جهت اصلی محور تراز شده اند و فاصله بین عنصر اول و آغاز خط همان فاصله بین عنصر آخر و انتهای خط است. |
پایان | عناصر در دم محور اصلی تراز شده اند ، آخرین عنصر در انتهای خط تراز می شود و سایر عناصر در آخرین مورد تراز می شوند. |
بین فضا | عناصر الاستیک به طور مساوی در جهت اسپیندل فلکس توزیع می شوند و فاصله بین عناصر مجاور یکسان است. عنصر اول با سر خط تراز شده است و آخرین عنصر با انتهای خط تراز می شود. |
فضانورد | عناصر الاستیک به طور مساوی در جهت اسپیندل فلکس توزیع می شوند و فاصله بین عناصر مجاور یکسان است. فاصله از عنصر اول تا ابتدای خط و فاصله از آخرین عنصر تا انتهای خط نیمی از فاصله بین عناصر مجاور است. |
فضانورد | عناصر الاستیک به طور مساوی در جهت محور اصلی فلکس توزیع می شوند. |
هم ترازی
نام | تصریح کردن |
---|---|
خودرو | از پیکربندی پیش فرض در ظرف Flex استفاده کنید. |
شروع | عناصر در ظرف Flex قرار دارند و هدر محور متقاطع تراز شده است. |
مرکز | عناصر در ظرف فلکس قرار دارند و جهت گیری محور تقاطع متمرکز است. |
پایان | عناصر در ظرف فلکس قرار دارند و پایین آن در جهت محور متقاطع تراز شده است. |
کشش | عناصر در ظرف فلکس قرار دارند ، کشیده و در جهت محور متقاطع پر شده اند. هنگامی که ظرف Flex است و بسته بندی روی FlexWrap.wrap یا FlexWrap.wrapreverse تنظیم شده است ، این عنصر با طولانی ترین محور عبور با ردیف/ستون فعلی به اندازه عنصر کشیده می شود. در موارد دیگر ، اندازه عنصر صرف نظر از اینکه اندازه عنصر تنظیم شده باشد یا خیر ، به اندازه ظرف کشیده می شود. |
پایه | عناصر در ظرف فلکس قرار دارند و پایه متن در جهت محور متقاطع تراز شده است. |
ویژگی های عنصر کودک
علاوه بر کنترل از طریق ظرف Flex ، عناصر کودک در داخل نیز می توانند آزادانه وضعیت محل را کنترل کنند ، مانندخمیدهبرای اختصاص فضای باقی مانده از طریقپیچ و خم، برای فشرده سازی نسبت (پیش فرض 1 ، قابل فشرده سازی) توسطخود را تراز کردنبرای پوشاندن هم تراز محور کانتینر.
به عنوان مثال ، ما به عنصر سوم می دهیم تا فضای باقی مانده را به طور کامل تنظیم کند:
Flex({ direction: FlexDirection.Row }) {
Text('元素1')
.width(100)
.padding(10)
.backgroundColor(Color.Red)
Text('元素2')
.padding(10)
.width(100)
.backgroundColor(Color.Pink)
Text('元素3')
.padding(10)
.width(100)
.flexGrow(1)
.backgroundColor(Color.Orange)
}
مشاهده اثر:
خلاصه مرتبط
در توسعه واقعی ، لازم است که به رابطه بین محور اصلی و محور متقاطع ، قوانین شکستن خط و ویژگی های عنصر کودک توجه کنید و نکته دیگری را به این نکته توجه کنید.