【问题标题】:How to correctly make a fragment rotate如何正确地使片段旋转
【发布时间】:2014-05-05 13:02:49
【问题描述】:

我正在尝试为将在显示之前旋转的应用创建一个片段(以避免更改为横向和纵向,因为我希望避免再次创建活动)。

当显示第一个片段(列表)时,用户选择一个选项,然后第二个片段显示为纵向。 为此,我在第二个片段的 xml 文件中添加了:

android:rotation="90"

但是这似乎不能正常工作,看起来屏幕是在竖屏模式下绘制的,然后旋转了90度然后显示,这有左右两边有一个大空白的效果,并且片段的标头未正确显示。

有人可以帮我解决这个问题吗,或者帮我解决显示问题,或者给我一个替代方案?

【问题讨论】:

    标签: android layout android-fragments


    【解决方案1】:

    我终于找到了答案 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;
    }
    

    希望对以后的人有所帮助

    【讨论】:

      【解决方案2】:

      在你想要定位的片段中使用它。

      getActivity().setRequestedOrientation(
                  ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
      

      如果您有许多片段并且只有一个片段您想要纵向其他片段应该根据用户兼容,那么请确保在您希望始终纵向以及其他片段使用的片段中提供以上内容

      getActivity().setRequestedOrientation(
                      ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
      

      【讨论】:

      • 我不认为它会起作用,看到我不想旋转整个活动,只是我在平板电脑中正常使用这个片段的片段,但是当涉及到手机时,我想旋转这个
      【解决方案3】:

      设置orientation="horizontal" 不能解决问题吗?

      更一般地说,重新创建 Activity 对您来说应该不是什么大问题。您应该能够保留所有更改,然后将它们从传递给 onCreate 的 Bundle 中提取出来。如果这是一个大问题,我会重新考虑您在应用中做出的一些设计选择。

      【讨论】:

      • 不,因为这只是改变了活动中视图的方向,它不会改变字母的方向。至于 on_create 的事情,我不想旋转整个屏幕(顶部有一个小标题,我希望保持它看起来像纵向)只是屏幕内的片段需要旋转
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 2015-04-22
      • 1970-01-01
      相关资源
      最近更新 更多