如何正确地使片段旋转

Cru*_*ces 3 layout android android-fragments

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

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

android:rotation="90"
Run Code Online (Sandbox Code Playgroud)

不过这好像不太行,好像屏幕是竖屏画的,然后旋转了90度再显示,这样就出现了左右两边有大块空白的效果,片段显示不正确。

有人可以通过帮助我解决显示问题或向我展示替代方案来帮助我吗?

Cru*_*ces 6

我终于找到了使用按钮以编程方式更改屏幕方向的答案

但由于它是一个片段,我希望不旋转整个屏幕,代码是这样的:

@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;
}
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助将来的某个人