我有三个别名资源文件,它们支持具有相同但布局名称不同的不同大小和方向,例如
<resources>
<item name="main_act_res" type="layout">@layout/main_act_h</item>
</resources>
<resources>
<item name="main_act_res" type="layout">@layout/main_act_v</item>
</resources>
每个布局都有一个用于片段的FrameLayout容器,该容器必须知道当前显示的布局才能获取具有正确方向的图像。
我在片段中使用的代码将始终获得别名(main_act_res),而不是布局名称(例如main_act_h)
val layoutName = activity?.resources?.getResourceEntryName(R.layout.main_act_res)
我尝试先获取资源ID,然后再命名,但出现“无法找到资源ID#0xffffffff”例外错误。
val layoutId = activity?.findViewById<View>(android.R.id.content)?.rootView?.id
val layoutName = layoutId?.let { activity?.resources?.getResourceEntryName(it) }
在这种情况下,获取当前显示的活动布局的正确方法是什么?
答案 0 :(得分:0)
由于评论中的Mike M.建议,我能够使用以下代码检索当前活动布局的名称:
val out = TypedValue()
activity?.resources?.getValue(R.layout.main_act_res, out, true)
val layoutId = out.resourceId
layoutName = activity?.resources?.getResourceEntryName(layoutId)