【发布时间】:2020-05-20 19:20:17
【问题描述】:
我想以编程方式在活动上添加自定义视图并将其放置在活动的底部中心。
到目前为止,我能够创建一个视图,设置其 X 和 Y 坐标并将其添加到根视图,但我无法居中对齐视图。
有什么办法可以做到吗?
我不想使用 XML 来实现这一点,因为我想动态添加视图。
我曾尝试在 StackOverflow 上搜索此内容,但无法正常工作。
这就是我添加视图的方式。
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
mView = inflater.inflate(R.layout.view_popup_toast, null)
mView?.findViewById<TextView>(R.id.popup_text)?.text = "Text"
mView?.x = 500F
val params = LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
//This is not working
//params.gravity = Gravity.CENTER_VERTICAL or Gravity.BOTTOM
(window.decorView.rootView as ViewGroup).addView(mView, params)
【问题讨论】:
-
您是否尝试实现类似的吐司行为?如果是这样,如果你的 Activity 有其他视图,你是如何在它上面显示 toast 的?
-
将 XML 布局的视图包装在 FrameLayout 中,这样您的
rootView将成为 FrameLayout。然后在以编程方式创建此视图时,给它FrameLayout.LayoutParams,以便您可以分配重力。 -
@y.allam 是的,我想要类似于 Toast 的东西。但是吐司是直接在窗口上绘制的,它使它变得不难处理。我希望这个自定义视图也能处理滑动手势。
-
@Tenfour04 你的意思是用 FrameLayout 包装我的自定义视图的 XML 还是用 FrameLayout 包装 Activity 的 XML?
-
Activity 的,因此您的视图可以覆盖其他所有内容。
标签: android android-layout kotlin android-activity android-view