确定设置/加载了哪个版本的布局

时间:2018-03-10 20:51:45

标签: android

我有两个版本的活动布局,一个用于横向和一个默认(肖像)版本。在下面的代码中,在setContent之后,我想根据加载的布局来做一些条件代码。最终它可能不仅仅是看方向那么简单,可能有更多的布局依赖于屏幕尺寸等。只是试图找出它加载的布局版本而不试图自己编写相同的条件逻辑。 / p>

library(tidyverse)


result <- df2 %>% 
  left_join(df1, by=c("AB" = "Name")) %>% select(XY, ZW, AB=Vote) %>% 
  left_join(df1, by=c("XY" = "Name")) %>% select(AB, XY=Vote, ZW) %>% 
  left_join(df1, by=c("ZW" = "Name")) %>% select(AB, XY, ZW=Vote)

result

enter image description here

2 个答案:

答案 0 :(得分:2)

如果你想做这样的条件事件,你可以使用一个布尔值资源(如果你有两个以上的配置,则使用整数值),在你正在测试的每个配置中放一个。

/res/values/foo.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <bool name="is_landscape">false</bool>
</resources>

/res/values-land/foo.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <bool name="is_landscape">true</bool>
</resources>

您可以通过解析值来检查:

if (resources.getBoolean(R.bool.is_landscape)) {
    // do something
}

答案 1 :(得分:1)

您可以在布局的根视图中添加字符串标记。 E.g。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rootView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:tag="landscape">
    ...

然后,您可以在视图夸大后检查标记,并知道它来自哪种资源类型。

when(rootView.tag) {
    "landscape" -> ...
    "portrait" -> ...
}