CardView 和 Fragment
介绍
CardView 是用于实现卡片式布局效果的重要控件,实际上也是一个 frameLayout, 只是额外提供了圆角和 阴影,看上去有立体效果 常用 API :| 方法 | 说明 |
| cardBackgroundColor | 设置背景颜色 |
| cardCornerRadius | 设置圆角边大小 |
| cardElevation | 阴影大小- 设置为0代表没有阴影 |
| cardMaxElevation | 最大的阴影大小 |
| cardPreventCornerOverlap | 在 v20 和之前的版本中添加内边距,这个属性是为了防止卡片内容 和边角的重叠 |
| cardUseCompatPadding | 设置内边距,v21+的版本和之前的版本仍旧具有一样的计算方式 |
| contentPadding | 内边距 |
| contentPaddingBottom | 底部边距 |
| contentPaddingLeft | 左侧边距 |
| contentPaddingRight | 右侧边距 |
| contentPaddingTop | 顶部边距 |
简单的使用
Fragment
Fragment的简介
1.Fragment 译为 “ 碎片 ” ,是 Android 3.0 ( API 11 )提出的,最开始是为了适配大屏的平板。 2.Fragment 看起来和 Activity 一样,是一个用户界面。可以结合多个 Fragments 到一个 activity 中来构 建一个有多方面功能的 UI ,还可以重用同一个 Fragment 在多个 activities 中。 Fragment 可以当成是 activity 的一个组件,每个 Fragment 有单独的生命周期,可以在 activity 运行时进行添加和移除 Fragment。因此,相比较于 activity , Fragment 更加轻量级,更加灵活。 3.一个 Fragment 总是被植入在一个 activity 中 ,并且其生命周期受其父 activity 直接影响,比如 activity 处于暂停,则其中的 Fragment 都暂停; activity 销毁,则所有 Fragment 都销毁。但是,当 一个 activity 运行时,你可以独立的操作每一个 Fragment ,比如添加和删除他们。进行类似的操作 时,可以将 Fragment 添加入被 activity 管理的后退栈中,这样用户可以通过点击返回按钮来返回之 前打开的 Fragment 。 4.Fragment 可以作为 activity 的一部分添加到布局文件中,通过声明元素作为 ViewGroup 的一部分。 也可以将 Fragment 作为一个没有自己 UI 的不可见的 activity 的工人。 总结一下: 1. Fragment 是依赖于 Activity 的,不能独立存在。 2. 一个 Activity 里可以有多个 Fragment 。 3. 一个 Fragment 可以被多个 Activity 重用。 4. Fragment 有自己的生命周期,并能接收输入事件。 5. 可以在 Activity 运行时动态地添加或删除 Fragment 。 Fragment 生命周期
Activity 加载 Fragment 的时候,依次调用: onAttach() -> onCreate() -> onCreateView() -> onActivityCreated() -> onStart() ->onResume() 2. 当做出一个悬浮的对话框风格的 Activity ,或者其他,就是让 Fragment 所在的 Activity 可见 , 但不获 得焦点: onPause() 3. 当对话框关闭, Activity 又获得了焦点: onResume() 4. 当替换 Fragment ,并调用 addToBackStack() 将它添加到 Back 栈中: onPause() -> onStop() -> onDestoryView() 。注意,此时的 Fragment 还没有被销毁哦。 5. 当按下键盘的回退键, Fragment 会再次显示出来: onCreateView() -> onActivityCreated() -> onStart() -> onResume() 6. 如果替换后,在事务 commit 之前没有调用 addToBackStack() 方法将 Fragment 添加到 back 栈中, 或者退出了 Activity 的话,那么 Fragment 将会被完全结束, Fragment 会进入销毁状态: onPause() -> onStop() -> onDestoryView() -> onDestory() -> onDetach()
使用碎片完成的一个页面
碎片的静态加载
public class FooterFragment extends Fragment {private Button button,button2,button3,button4,button5;// TODO: Rename parameter arguments, choose names that match// the fragment initialization parameters, e.g. ARG_ITEM_NUMBERprivate static final String ARG_PARAM1 = "param1";private static final String ARG_PARAM2 = "param2";// TODO: Rename and change types of parametersprivate String mParam1;private String mParam2;public FooterFragment() {// Required empty public constructor}/*** Use this factory method to create a new instance of* this fragment using the provided parameters.** @param param1 Parameter 1.* @param param2 Parameter 2.* @return A new instance of fragment FooterFragment.*/// TODO: Rename and change types and number of parameterspublic static FooterFragment newInstance(String param1, String param2) {FooterFragment fragment = new FooterFragment();Bundle args = new Bundle();args.putString(ARG_PARAM1, param1);args.putString(ARG_PARAM2, param2);fragment.setArguments(args);return fragment;}@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (getArguments() != null) {mParam1 = getArguments().getString(ARG_PARAM1);mParam2 = getArguments().getString(ARG_PARAM2);}}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentView view=inflater.inflate(R.layout.fragment_footer, container, false);button=view.findViewById(R.id.button);button2=view.findViewById(R.id.button2);button3=view.findViewById(R.id.button3);button4=view.findViewById(R.id.button4);button5=view.findViewById(R.id.button5);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(getActivity(),"按钮1已被点击",Toast.LENGTH_SHORT).show();}});button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(getActivity(),"按钮2已被点击",Toast.LENGTH_SHORT).show();}});button3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(getActivity(),"按钮3已被点击",Toast.LENGTH_SHORT).show();}});button4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(getActivity(),"按钮4已被点击",Toast.LENGTH_SHORT).show();}});button5.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(getActivity(),"按钮5已被点击",Toast.LENGTH_SHORT).show();}});return view;}
}
在Fragment所依赖的 Activity中的activity.xml文件中调用
动态加载
需要先创建结构
创建menu包在包内创建xml文件
然后在Activity内进行切换
package com.hopu.socialapp;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.MenuItem;import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.navigation.NavigationBarView;
import com.hopu.socialapp.fragment.ConsultFragment;
import com.hopu.socialapp.fragment.FrontFragment;
import com.hopu.socialapp.fragment.InformationFragment;
import com.hopu.socialapp.fragment.MyFragment;public class MainActivity extends AppCompatActivity {private BottomNavigationView bottom_navigation;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bottom_navigation = findViewById(R.id.bottom_navigation);ConsultFragment consultFragment = new ConsultFragment();FrontFragment fragment = new FrontFragment();InformationFragment informationFragment = new InformationFragment();MyFragment myFragment = new MyFragment();getSupportFragmentManager().beginTransaction().add(R.id.fl_th,fragment).commit();bottom_navigation.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {@Overridepublic boolean onNavigationItemSelected(@NonNull MenuItem item) {if (item.getItemId() == R.id.page_1){getSupportFragmentManager().beginTransaction().replace(R.id.fl_th,fragment).commit();}else if (item.getItemId() == R.id.page_2){getSupportFragmentManager().beginTransaction().replace(R.id.fl_th,consultFragment).commit();} else if (item.getItemId() == R.id.page_3){getSupportFragmentManager().beginTransaction().replace(R.id.fl_th,informationFragment).commit();} else if (item.getItemId() == R.id.page_4){getSupportFragmentManager().beginTransaction().replace(R.id.fl_th,myFragment).commit();}return true;}});}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
