Android Studio 切换fragment重叠问题

最近在使用Fragment切换操作时,遇到2个fragment有重叠部分,经过仔细分析发现,是另外一个(RightFragment)布局下面textview的问题,在做2个fragment切换的时候总有一部分是重叠的,原因是出在textview是占据RightFragment的一部分布局,可以把布局里面textview的android:visibility=gone;把textview先隐藏起来,然后在需要显示的地方将其

setVisibility(View.VISIBLE)其他不需要的地方设置为setVisibility(View.GONE)即可

=================>>>>>正常切换==================>>>>============================>因为Textview控件造成的重叠如图::




RigthFragment布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ff0059"
    android:orientation="vertical"

    >
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tvReceiveInfo"
    android:textSize="30dp"
    android:textColor="#f1139303"
    android:visibility="gone"  //将其隐藏起来,此处可以省略,但是需要在需要隐藏的代码处将其隐藏
    />

</LinearLayout>

RightFragment将其显示出来

package fragment.tian.io.androidfrg;

import android.content.Context;
import android.net.Uri;
import android.os.Bundle;

import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.app.Fragment;

public class RightFragment extends Fragment {

private TextView tvReceiveInfo;
    public RightFragment() {
        // Required empty public constructor
    }

   private String str1;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        Bundle bundle=getArguments();
        if(bundle!=null) {
            str1 = bundle.getString("strData");
        }

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view=inflater.inflate(R.layout.fragment_right, container, false);
        tvReceiveInfo=(TextView)view.findViewById(R.id.tvReceiveInfo);

//        if (!str1.equals(""))
//        {
           // tvReceiveInfo.setText(str1);
//        }
        return view;
    }

         public void updateTextView(String str)
         {
             tvReceiveInfo.setVisibility(View.VISIBLE);  //将其显示出来
             tvReceiveInfo.setText(str);

         }
}

这样就以实现带有textview空间的fragment重叠问题~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
要在 Android Studio 中使用 Fragment 实现页面跳转,可以按照以下步骤进行: 1. 在 Android Studio 中创建一个新的项目并打开它。 2. 在项目的 `res` 目录下创建一个新的文件夹 `layout`,在其中创建两个 XML 布局文件,分别表示两个页面。 3. 在 Java 代码中创建两个 Fragment 类,分别对应两个页面,并实现它们的布局和逻辑。 4. 在主 Activity 中创建一个布局容器(比如 FrameLayout),用于显示 Fragment。 5. 在主 Activity 中实例化两个 Fragment,并通过 FragmentTransaction 将其中一个添加到布局容器中,另一个则隐藏。 6. 在主 Activity 中实现一个切换页面的方法,通过 FragmentTransaction 将当前显示的 Fragment 隐藏,将需要显示的 Fragment 添加到布局容器中。 具体实现方式可以参考以下代码: 1. 在 `layout` 目录下创建两个 XML 布局文件: fragment_page1.xml: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is page 1" /> <Button android:id="@+id/btn_switch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Switch to page 2" /> </LinearLayout> ``` fragment_page2.xml: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is page 2" /> <Button android:id="@+id/btn_switch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Switch to page 1" /> </LinearLayout> ``` 2. 在 Java 代码中创建两个 Fragment 类: Page1Fragment.java: ```java public class Page1Fragment extends Fragment { private Button btnSwitch; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_page1, container, false); btnSwitch = view.findViewById(R.id.btn_switch); btnSwitch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ((MainActivity)getActivity()).switchFragment(new Page2Fragment()); } }); return view; } } ``` Page2Fragment.java: ```java public class Page2Fragment extends Fragment { private Button btnSwitch; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_page2, container, false); btnSwitch = view.findViewById(R.id.btn_switch); btnSwitch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ((MainActivity)getActivity()).switchFragment(new Page1Fragment()); } }); return view; } } ``` 3. 在主 Activity 中创建一个布局容器和两个 Fragment: MainActivity.java: ```java public class MainActivity extends AppCompatActivity { private FrameLayout container; private Page1Fragment page1Fragment; private Page2Fragment page2Fragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); container = findViewById(R.id.container); page1Fragment = new Page1Fragment(); page2Fragment = new Page2Fragment(); getSupportFragmentManager().beginTransaction() .add(R.id.container, page1Fragment) .hide(page2Fragment) .commit(); } public void switchFragment(Fragment fragment) { getSupportFragmentManager().beginTransaction() .hide(page1Fragment) .hide(page2Fragment) .show(fragment) .commit(); } } ``` 4. 运行程序即可看到初始页面为 `Page1Fragment`,点击按钮可以切换到 `Page2Fragment`,再次点击可以切换回 `Page1Fragment`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值