别名资源文件中当前显示的布局的名称

时间:2019-03-25 23:22:34

标签: android

我有三个别名资源文件,它们支持具有相同但布局名称不同的不同大小和方向,例如

<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) }

在这种情况下,获取当前显示的活动布局的正确方法是什么?

1 个答案:

答案 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)