我正在尝试为应用程序创建一个片段,该片段将在显示之前旋转(以避免更改为横向和纵向,因为我希望避免再次创建活动)。
当显示第一个片段(列表)时,用户选择一个选项,然后第二个片段显示为像是纵向。 为此,我在第二个片段的xml文件中添加了:
android:rotation="90"
然而,这似乎无法正常工作,看起来屏幕是以纵向模式绘制的,然后旋转了90度然后显示,这会产生右侧和左侧有大空白的效果,以及片段的标题未正确显示。
有人可以通过帮助我解决显示问题或向我展示替代方案来帮助我吗?
答案 0 :(得分:2)
我终于找到了答案 Change Screen Orientation programmatically using a Button
但由于它是一个片段,我希望不旋转整个屏幕,代码是这样的:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (mView != null) return mView; //I use this because I use the same fragment , if you use different fragments remove this
mView = (LinearLayout) inflater.inflate(R.layout.fragment_customer_card_view, container, false);
int w = container.getWidth();
int h = container.getHeight();
mView.setRotation(90);
mView.setTranslationX((w - h) / 2);
mView.setTranslationY((h - w) / 2);
ViewGroup.LayoutParams lp = mView.getLayoutParams();
lp.height = w;
lp.width = h;
mView.requestLayout();
return mView;
}
希望它能在将来帮助某人
答案 1 :(得分:-1)
在你想要定位的片段中使用它。
getActivity().setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
如果你想要很多片段和只有一个片段,那么其他片段应该是基于用户的兼容性,那么请确保在片段中给出上面你想要纵向的片段以及其他片段使用
getActivity().setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
答案 2 :(得分:-1)
设置orientation="horizontal"
不能解决问题吗?
更一般地说,重新创建活动对你来说不是一件大事。您应该能够保留所有更改,然后将它们从传递给onCreate
的Bundle中删除。如果这是一个大问题,我会重新考虑您在应用中进行的一些设计选择。