布局参数更改后,布局功能不起作用

时间:2014-10-04 10:35:53

标签: android layout

在我的应用中,我实施了onConfigurationChanged,其中我通过按钮和imageView重新定位以匹配新配置。

更改为横向模式后,按钮不起作用,我的意思是,onClickListener没有效果。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    System.out.println("changed!");
    if ( PackageBuilder.popupW!=null )
        if ( PackageBuilder.popupW.isShowing() ) {
            if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {

                RelativeLayout.LayoutParams imageviewp = (RelativeLayout.LayoutParams) (PackageBuilder.popUpView.findViewById(R.id.mImageView)).getLayoutParams();
                imageviewp.topMargin=(int)( (screenHeight) / (4.15) );               
                imageviewp.height=(int)((screenHeight)*(0.25)); //250
                imageviewp.width=(int)((screenWidth)*(0.3125)); //200

                RelativeLayout.LayoutParams a=(RelativeLayout.LayoutParams) (PackageBuilder.popUpView.findViewById(R.id.imageViewR)).getLayoutParams();
                a.height=(int)((screenHeight)*(0.25));
                a.width=(int)((screenWidth)*(0.3125));
            }

            else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {

                RelativeLayout.LayoutParams imageviewp = (RelativeLayout.LayoutParams) (PackageBuilder.popUpView.findViewById(R.id.mImageView)).getLayoutParams();
                imageviewp.topMargin=(int)( (screenHeight) / (2) );
                imageviewp.height=( (int) ( (screenHeight)*(0.15)) ); //120
                imageviewp.width=( (int) ( (screenWidth)*(0.145)) );  //70

                RelativeLayout.LayoutParams a=(RelativeLayout.LayoutParams) (PackageBuilder.popUpView.findViewById(R.id.imageViewR)).getLayoutParams();
                a.height=( (int) ( (screenHeight)*(0.15)) );
                a.width=( (int) ( (screenWidth)*(0.145)) );
            }
        }
}

请注意,我没有更改内容视图,我只是简单地获取布局小部件的引用并更改其布局参数。

1 个答案:

答案 0 :(得分:0)

我曾经独自处理运行时更改并遇到同样的问题。

来自开发者的网站:

  

注意:自行处理配置更改会使使用备用资源变得更加困难,因为系统不会自动为您应用这些资源。当您必须避免因配置更改而重新启动时,此技术应被视为最后的手段,并且不建议用于大多数应用程序。

为了让系统为您处理更改并只更改事物的布局,请在 res 文件夹中创建 layout-land 文件夹,然后将其放入新的.xml文件,其名称与布局文件夹中的名称相同。因此,当您的方向更改为横向时,它将在layout-land文件夹中查找xml。