import{_ as e,r as o,o as p,c as i,b as n,d as s,a as c,e as a}from"./app--CGKFO0X.js";const t={},r=a(`
这是 Hikage 针对 UI 组件相关功能的扩展依赖。
你可以使用如下方式将此模块添加到你的项目中。
在你的项目 gradle/libs.versions.toml 中添加依赖。
[versions]
hikage-extension = "<version>"
[libraries]
hikage-extension = { module = "com.highcapable.hikage:hikage-extension", version.ref = "hikage-extension" }
在你的项目 build.gradle.kts 中配置依赖。
implementation(libs.hikage.extension)
请将 <version> 修改为此文档顶部显示的版本。
在你的项目 build.gradle.kts 中配置依赖。
implementation("com.highcapable.hikage:hikage-extension:<version>")
请将 <version> 修改为此文档顶部显示的版本。
Hikage 为 Activity 提供了更好用的扩展,在 Activity 中创建 Hikage 将会变得更加简单。
示例如下
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView {
LinearLayout(
lparams = LayoutParams(matchParent = true) {
topMargin = 16.dp
},
init = {
orientation = LinearLayout.VERTICAL
gravity = Gravity.CENTER
}
) {
TextView {
text = "Hello, World!"
textSize = 16f
gravity = Gravity.CENTER
}
}
}
}
}
借助 Hikage 的 setContentView 扩展方法,你可以像 Jetpack Compose 一样使用 setContent 方法来设置布局。
在 Window 中使用 Hikage 创建布局与 Activity 保持一致,你只需要使用 setContentView 方法传入一个 Hikage 布局即可。
如果你想直接在 AlertDialog 中使用 Hikage 创建布局,现在你可以使用以下方案更加简单地进行。
示例如下
// 假设这就是你的 Context
val context: Context
// 创建对话框并显示
AlertDialog.Builder(context)
.setTitle("Hello, World!")
.setView {
TextView {
text = "Hello, World!"
textSize = 16f
}
}
.show()
在 AlertDialog 中使用 Hikage 创建布局,你只需要使用 setView 方法传入一个 Hikage 布局即可。
如果你是继承于 Dialog 进行自定义,那么你可以和像在 Activity 一样使用 setContentView 方法。
示例如下
class CustomDialog(context: Context) : Dialog(context) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView {
LinearLayout(
lparams = LayoutParams(matchParent = true) {
topMargin = 16.dp
},
init = {
orientation = LinearLayout.VERTICAL
gravity = Gravity.CENTER
}
) {
TextView {
text = "Hello, World!"
textSize = 16f
gravity = Gravity.CENTER
}
}
}
}
}
你可以继承于 PopupWindow 进行自定义,然后使用 Hikage 创建布局,你可以和像在 Activity 一样使用 setContentView 方法。
示例如下
class CustomPopupWindow(context: Context) : PopupWindow(context) {
init {
setContentView(context) {
LinearLayout(
lparams = LayoutParams(matchParent = true) {
topMargin = 16.dp
},
init = {
orientation = LinearLayout.VERTICAL
gravity = Gravity.CENTER
}
) {
TextView {
text = "Hello, World!"
textSize = 16f
gravity = Gravity.CENTER
}
}
}
}
}
特别注意
创建 Hikage 布局的 PopupWindow 需要使用 Context 构造方法进行初始化,如果当前无法立即获取到 Context,请对 setContentView 方法传入 Context 实例。
Hikage 对 ViewGroup 的 addView 方法进行了扩展,你可以直接使用 Hikage 布局来为当前 ViewGroup 快速添加新的布局。
示例如下
// 假设这就是你的 ViewGroup
val root: FrameLayout
// 添加 Hikage 布局
root.addView {
TextView {
text = "Hello, World!"
textSize = 16f
}
}
或者,在自定义 View 中使用。
示例如下
class CustomView(context: Context, attrs: AttributeSet? = null) : FrameLayout(context, attrs) {
init {
addView<FrameLayout.LayoutParams> {
TextView {
text = "Hello, World!"
textSize = 16f
}
}
}
}