Android移动应用开发学习:fragment布局2

        上一篇的内容讲到的是属于一个静态布局,但是静态布局有很多的不方便,所以在日常使用中使用的很少,所以我们学习了新的一个方法,fragment的动态布局。

        在静态布局的基础上,我们把activity.xml文件中的name删除,然后把fragment改成一种布局方式,可以是约束布局,也可以是线性布局。然后我们进入到activity.java文件中,获取到我们创建的一个fragment,获取方式与java中的获取类方法一样,然后我们在下面添加一段这样的代码

        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.fragment,blankFragment)   
//两个参数,一个是id,一个是布局名字,就是上面定义的fragment
                .commit();

        这个代码是替换fragment里面的内容变成我们定义的这个blankfragment,前面一个是布局的id,后面的参数,是我们上面新定义的一个fragment对象。然后设置好了之后我们就可以进行一个动态的展示了,这样子更加方便我们替换这个地方的文件。

        如果我们有多个fragment布局需要添加到里面,那么我们可以通过一下的代码来进行一个解决。

package com.example.qqfragment;

import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        BlankFragment blankFragment=new BlankFragment();
        BlankFragment2 blankFragment2=new BlankFragment2();
        BlankFragment3 blankFragment3=new BlankFragment3();
        ConstraintLayout message=findViewById(R.id.message);
        ConstraintLayout people=findViewById(R.id.people);
        ConstraintLayout dongtai=findViewById(R.id.dongtai);
        ConstraintLayout buju=findViewById(R.id.buju);
        getSupportFragmentManager()
                .beginTransaction()
                .add(R.id.buju,blankFragment)   //两个参数,一个是id,一个是布局名字,就是上面定义的fragment
                .commit();
        getSupportFragmentManager()
                .beginTransaction()
                .add(R.id.buju,blankFragment2)   //两个参数,一个是id,一个是布局名字,就是上面定义的fragment
                .commit();
        getSupportFragmentManager()
                .beginTransaction()
                .add(R.id.buju,blankFragment3)   //两个参数,一个是id,一个是布局名字,就是上面定义的fragment
                .commit();
        getSupportFragmentManager()
                .beginTransaction()
                .hide(blankFragment2)
                .hide(blankFragment3)
                .show(blankFragment)//两个参数,一个是id,一个是布局名字,就是上面定义的fragment
                .commit();
        message.setSelected(true);
        people.setSelected(false);
        dongtai.setSelected(false);
        message.setOnClickListener(new View.OnClickListener() {
            @Override

            public void onClick(View view) {
                message.setSelected(true);
                people.setSelected(false);
                dongtai.setSelected(false);
                getSupportFragmentManager()
                        .beginTransaction()
                        .show(blankFragment)
                        .hide(blankFragment2)
                        .hide(blankFragment3)//两个参数,一个是id,一个是布局名字,就是上面定义的fragment
                        .commit();
            }
        });
        people.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                message.setSelected(false);
                people.setSelected(true);
                dongtai.setSelected(false);
                getSupportFragmentManager()
                        .beginTransaction()
                        .hide(blankFragment)
                        .show(blankFragment2)
                        .hide(blankFragment3)   //两个参数,一个是id,一个是布局名字,就是上面定义的fragment
                        .commit();
            }
        });
        dongtai.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                message.setSelected(false);
                people.setSelected(false);
                dongtai.setSelected(true);
                getSupportFragmentManager()
                        .beginTransaction()
                        .hide(blankFragment)
                        .hide(blankFragment2)
                        .show(blankFragment3)   //两个参数,一个是id,一个是布局名字,就是上面定义的fragment
                        .commit();
            }
        });

    }
}

        这是一个简单的示例,我们可以通过add,hide,show这几个关键字来进行添加,通过按钮的点击事件,我们点击不同的按钮,就可以变成不同的界面展示,然后其他的隐藏起来,我们采用先添加来隐藏的原因就是因为,我们如果i每一次都对这个界面进行一个替换,然后我们如果在这个界面进行了操作,等我们换了一个界面再切换回来的时候,我们之前在这个界面所做的操作直接清除了,所以为了保存我们的操作,我们可以进行一个添加隐藏来写。

        补充内容,如何实现按钮点击切换图片

首先将两张图片导入,然后我们我们在drawable文件夹下面新建一个xml文件,然后通过下面这段代码,

    <item android:drawable="@drawable/message_select" android:state_selected="true" />
    <item android:drawable="@drawable/message_unselect" android:state_selected="false" />

一个是选择时候的展示图片,一个是没有被选择时候的图片,然后我们在按钮点击事件里面添加,

people.setSelected(true);

这样的话,我们就可以通过这个代码然后来进行下面图标的颜色变化,但是每次点击的时候,我们需要把其他的三个点击事件变成false,那样就会变成一个只有一个的点击事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值