我在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 举报,一经查实,本站将立刻删除。