便以理解,先贴代码
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 设置为全屏模式
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
}
我在res下新建了layout、layout-land、layout-port文件夹,并分别新建了main.xml,
<TextView
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="layout-land" />每个main.xml里的text都显示为自己的文件夹名。最近发现,在横屏下(注意是手机横放)点击应用,它会调用layout-land下的布局,这很正常,但是把手机竖放的时候,它还是使用layout-land下的布局,也就是说TextView显示“layout-land”。
接着,我退出应用,在竖屏下(注意是竖屏)点击应用,它会调用layout-port下的布局,这很正常,但是把手机横放的时候,它还是使用layout-port下的布局,也就是说TextView显示“layout-port”。上面的应用是已经加了 android:configChanges="keyboardHidden|orientation",即支持横竖屏切换。我的问题是,进入应用后,如何横屏下TextView显示layout-land,切换到竖屏下显示layout-port?即横屏时使用layout-land布局,竖屏时使用layout-port布局,而不只是在横屏或竖屏下运行应用时才有效?
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 设置为全屏模式
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
}
我在res下新建了layout、layout-land、layout-port文件夹,并分别新建了main.xml,
<TextView
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="layout-land" />每个main.xml里的text都显示为自己的文件夹名。最近发现,在横屏下(注意是手机横放)点击应用,它会调用layout-land下的布局,这很正常,但是把手机竖放的时候,它还是使用layout-land下的布局,也就是说TextView显示“layout-land”。
接着,我退出应用,在竖屏下(注意是竖屏)点击应用,它会调用layout-port下的布局,这很正常,但是把手机横放的时候,它还是使用layout-port下的布局,也就是说TextView显示“layout-port”。上面的应用是已经加了 android:configChanges="keyboardHidden|orientation",即支持横竖屏切换。我的问题是,进入应用后,如何横屏下TextView显示layout-land,切换到竖屏下显示layout-port?即横屏时使用layout-land布局,竖屏时使用layout-port布局,而不只是在横屏或竖屏下运行应用时才有效?
应该这样理解:
在AndroidManifest.xml中未加android:configChanges="keyboardHidden|orientation"或
android:screenOrientation="portrait",并且在xxx.java文件里没有加setRequestedOrientation(mOrient)这句代码的话,运行程序,横屏下会调用layout-land里的布局,竖屏下会调用layout-port里的布局,默认调用layout布局。
加了上面任何一句话的话,在运行程序的时候,如里手机是横立的,则运行完毕后,一直使用的是layout-land里的布局。如里手机是竖立的,则运行完毕后,一直使用的是layout-port里的布局。