微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

版本配置无法正常运行的Android版面

我在res / layout-v19中有一个布局,activity_read为:

<FrameLayout ...>
...
<include layout="@layout/main_toolbar" />

<View
    android:id="@+id/read_view"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#f00"
    android:tag="V19"
    />
...

我在res / layout中有另一个activity_read:

<RelativeLayout ...>
...
<include layout="@layout/main_toolbar" />

<View
    android:id="@+id/read_view"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#f00"
    android:tag="V1"
    />
...

我正在尝试在Activity中加载activity_read布局:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_read);
    View read = findViewById(R.id.read_view);
    Log.v(TAG,"SDK: " + read.getTag()); //Prints SDK: V1
}

我在Lollipop模拟器上运行此示例,因此对于基于平台版本的资源的documentation says,它应该选择res / layout-v19中的布局.
但是,始终会加载res / layout中的activity_read布局,如“SDK:V1”日志所示.

我也试过看看我是否可以根据平台级别加载其他资源,即值/数字中的整数:

<integer name="test_num">1</integer>

和值-v19 /数字:

<integer name="test_num">19</integer>

哪个工作正常:

Log.v(TAG,"NUMBER: " + getResources().getInteger(R.integer.test_num)); //Prints NUMBER: 19

我也尝试将它移动到res / layout-v21,它实际上工作,但它应该适用于layout-v1到layout-v21以及文档.

我浪费了相当多的时间来研究这个问题,文档是错误的还是我错过了什么?

提前致谢.

解决方法

我有同样的问题 – 我创建了一个版本的v19版本,但在Lollipop上它加载了非v19版本.所以我在代码中进行了API检查,并在那里夸大了正确的布局:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        v = inflator.inflate(R.layout.item_showdetail_asset_kitkat,this);
    } else {
        v = inflator.inflate(R.layout.item_showdetail_asset,this);
    }

不是理想的解决方案,但它有效……

所以对于你问题中的onCreate(),它看起来像这样:

protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        setContentView(R.layout.activity_read_kitkatversion);
   }else{
        setContentView(R.layout.activity_read);
   }
   View read = findViewById(R.id.read_view);
   Log.v(TAG,"SDK: " + read.getTag());
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐