android - 在方向更改时更改 fragment 布局

标签 android android-layout android-fragments

我有以下问题:

我有一个 TabActivity,它在其中一个选项卡中显示一个 FragmentActivity

那个 FragmentActivity 添加了一个 ListFragment,当点击那个 ListFragment 的项目时,一个 fragment 被添加(也到后台)并且显示。

现在我需要更改该 Fragment 的布局以在横向时更改。

但我完全不知道在哪里实现该更改。我已经在 layout-land 文件夹中创建了正确的布局。但是正确的设置点在哪里呢?

最佳答案

警告:这可能是 Lollipop 之前的答案。

Fragment 不会在配置更改时重新膨胀,但您可以通过使用 FrameLayout 创建它并(重新)填充它来实现如下效果手动:

public class MyFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) {
        FrameLayout frameLayout = new FrameLayout(getActivity());
        populateViewForOrientation(inflater, frameLayout);
        return frameLayout;
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        LayoutInflater inflater = LayoutInflater.from(getActivity());
        populateViewForOrientation(inflater, (ViewGroup) getView());
    }

    private void populateViewForOrientation(LayoutInflater inflater, ViewGroup viewGroup) {
        viewGroup.removeAllViewsInLayout();
        View subview = inflater.inflate(R.layout.my_fragment, viewGroup);

        // Find your buttons in subview, set up onclicks, set up callbacks to your parent fragment or activity here.
    }
}

我对这里的 getActivity() 和相关调用不是特别满意,但我认为没有其他方法可以获取这些东西。

更新:移除了从ViewGroupFrameLayout的转换并使用了LayoutInflater.from(),第三个inflate() 的参数,而不是显式添加 View 。

关于android - 在方向更改时更改 fragment 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7442811/

相关文章:

android - 如何知道 Lottie 动画何时完成?

android - 预期引用但得到(原始字符串)@+android :style/Animation. 半透明

android - 与字符串匹配并在android中使用本地数据库检索所有可用字符串

java - ViewPager 的 fragment 被隐藏

android - 如何使用工具栏将 float 操作按钮集成到线性布局中

java - 为什么布局参数在 Android 编程中起作用?

android - 如何创建适合工作表大小且 View 始终与底部对齐的 android Bottom Sheet ?

android - 如何通知用户有关 Android 应用程序更新?

java - Android ListView 的过滤器 - 空格字符

android - 为什么会这样?我该如何解决?安卓 : UNEXPECTED TOP-LEVEL EXCEPTION: