在android中运行时更改活动的布局

时间:2012-03-20 12:09:00

标签: android android-activity

我正在开发一个Android应用程序,我需要在运行时更改活动的布局

我想知道,当视图模式从纵向更改为横向或签证时,如何更改活动的布局

请有人告诉我什么是上述问题的可行和有效的解决方案。 在此先感谢

4 个答案:

答案 0 :(得分:2)

最佳方法是设置横向文件夹,您可以将其命名为

layout-land

你会在该文件夹中放入另一个main.xml,android框架会自动选择该横向布局。

此处有来自supporting multiple screen

的Android指南的更多信息

答案 1 :(得分:1)

检测方向变化的代码

 @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            if(newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
                SharedVariables.isScreenOrientPotrail=false;
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

            }
            else if(newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES){
                SharedVariables.isScreenOrientPotrail=true;
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

            }
        }

答案 2 :(得分:0)

LayoutInflater inflater = context.getLayoutInflater();

                View rowView = inflater.inflate(R.layout.your_dyanmic_layoutid, null, true);

rowview 添加到您的mainlayout。

答案 3 :(得分:0)

我在这里粘贴代码..这个..

public void onConfigurationChanged(Configuration orient) 
    {
        super.onConfigurationChanged(orient);

        // Checks the orientation of the screen
        if (orient.orientation == Configuration.ORIENTATION_LANDSCAPE)
        {
                      //code here for LANDSCAPE..
        ));   

        }
        else if (orient.orientation == Configuration.ORIENTATION_PORTRAIT)
        {           
                      //code here for PORTRAIT ..   
            }               
    }

CAll方法;

  @Override
public void onCreate(Bundle savedInstanceState) 
{
        onConfigurationChanged(getResources().getConfiguration());
    }