我也遇到了同样的问题,然后我找到了解决方案。
首先您必须为您的平板电脑声明布局文件夹,例如:
layout-sw360dp/ : 720p screens
和layout-sw540dp/ : 1080p screens
然后,在这些文件夹中定义您的布局文件。但它不会解决纵向和横向问题。
为了使您的应用具有响应性,您还必须声明一些 XML 文件。
将bool 资源放入res.values 以检查屏幕大小。
bool.xml (mobile)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="portrait_only">true</bool>
<bool name="landscape_only">false</bool>
</resources>
// bool.xml (sw600dp)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="portrait_only">false</bool>
<bool name="landscape_only">true</bool>
</resources>
// bool.xml (sw720dp)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="portrait_only">false</bool>
<bool name="landscape_only">true</bool>
</resources>
添加这些资源后转到您的MainActivity.java 文件及以上:
setContentView(R.layout.activity_main);
添加此检查:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// locking out landscape screen orientation for mobiles
if(getResources().getBoolean(R.bool.portrait_only)){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
// locking out portait screen orientation for tablets
if(getResources().getBoolean(R.bool.landscape_only)){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
setContentView(R.layout.activity_main);
}
为了正确更改方向,您应该在清单中的活动标签中添加以下内容:
<activity
android:name="com.ABC"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
这样就可以了。