在我的应用中,我实施了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)) );
}
}
}
请注意,我没有更改内容视图,我只是简单地获取布局小部件的引用并更改其布局参数。
答案 0 :(得分:0)
我曾经独自处理运行时更改并遇到同样的问题。
来自开发者的网站:
注意:自行处理配置更改会使使用备用资源变得更加困难,因为系统不会自动为您应用这些资源。当您必须避免因配置更改而重新启动时,此技术应被视为最后的手段,并且不建议用于大多数应用程序。
为了让系统为您处理更改并只更改事物的布局,请在 res 文件夹中创建 layout-land 文件夹,然后将其放入新的.xml文件,其名称与布局文件夹中的名称相同。因此,当您的方向更改为横向时,它将在layout-land文件夹中查找xml。