随着手机不同尺寸的推出,加上平板市场的火热,很多软件开始做左侧导航,右侧详情,这样可以方便我们更加直观的看到详情。
例如这样:

下面就用简洁明了的代码来说怎样实现的吧!
直接上步骤

1.在AndroidManifest里面先把Activity设置成横屏显示
加粗这块放进去即可,当然不设置也没事哈
这句话:
android:screenOrientation=”landscape”

<activity android:name=".MainActivity"android:screenOrientation="landscape"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>

2.再去写布局啦
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.holly.mytest4"><application
        android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"android:screenOrientation="landscape"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

再写左侧的fragment布局,取名:left_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/fragment_container"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/white"android:orientation="vertical"><ListView
        android:id="@+id/lv1"android:layout_width="match_parent"android:layout_height="match_parent"></ListView></LinearLayout>

右侧显示详情的fragment布局,取名right_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><TextView
        android:id="@+id/tv"android:text="测试字体"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:textSize="20sp"/></LinearLayout>

好了,到这里布局就都写完了
然后创建一个实体,叫做:entity.class,代码如下

package com.holly.mytest4;/*** Created by Administrator on 2017/1/4.*/public class entity {private String title ;private String content ;public entity(String title, String content) {this.title = title;this.content = content;}public entity() {}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}@Overridepublic String toString() {return  title;}
}

左侧的fragment绑定布局,创建一个LeftFragment.class

package com.holly.mytest4;import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;import com.holly.mytest4.R;
import com.holly.mytest4.entity;import java.util.ArrayList;/*** Created by Administrator on 2017/1/3.*/public class LeftFragment extends Fragment {ListView lv ;ArrayList<entity> datas = new ArrayList<entity>() ;ArrayAdapter<entity> adapter ;View view ;ListViewItemClickListener listViewItemClickListener ;/*** 在该方法中绑定布局,初始化控件,绑定监听器* @param inflater* @param container* @param savedInstanceState* @return 返回的就是当前fragment布局转换成的View对象*/@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {System.out.println("container-->"+container);if(view == null){view = inflater.inflate(R.layout.left_layout,null);lv = (ListView) view.findViewById(R.id.lv1);//通过getActivity方法得到该fragment所依赖的Activity对象System.out.println("getActivity()-->"+getActivity());adapter = new ArrayAdapter<entity>(getActivity(),android.R.layout.simple_list_item_1,datas);//设置适配器lv.setAdapter(adapter);lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {//将指定位置的数据设置给listViewItemClickListenerlistViewItemClickListener.onItemClick(datas.get(position).getContent());}});}return view;}//在该方法中加载数据@Overridepublic void onStart() {super.onStart();getData();adapter.notifyDataSetChanged();}private void getData(){entity entry = new entity("Android","三星,华为,小米,htc等");datas.add(entry);entry = new entity("IOS","iphone,ipad");datas.add(entry);entry = new entity("WP","诺基亚,htc,华为");datas.add(entry);}public interface ListViewItemClickListener{public void onItemClick(String content);}@Overridepublic void onAttach(Context context) {super.onAttach(context);listViewItemClickListener = (ListViewItemClickListener) context;}
}

右侧的同样也需要绑定,创建一个RightFragment.class,当然这里我自己加了一些生命周期的方法,为了验证生命周期,我测试了一下,可以删掉哦

package com.holly.mytest4;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;import com.holly.mytest4.R;/*** Created by Administrator on 2017/1/3.*/public class RightFragment extends Fragment {View view ;TextView tv ;//当该Fragment与Activity发生关联的一瞬间触发的方法@Overridepublic void onAttach(Context context) {super.onAttach(context);System.out.println("RightFragment-->onAttach-->"+context);}//创建,实例化@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);System.out.println("RightFragment-->onCreate");}//创建视图@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {if(view == null){view = inflater.inflate(R.layout.right_layout,null);tv = (TextView) view.findViewById(R.id.tv);}System.out.println("RightFragment-->onCreateView");return view;}//提供给TextView设置数据的方法public void setTextViewText(String text){tv.setText(text);}//当与之绑定的Activity的onCreate方法执行结束之后触发的方法@Overridepublic void onActivityCreated(@Nullable Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);System.out.println("RightFragment-->onActivityCreated");}@Overridepublic void onStart() {super.onStart();System.out.println("RightFragment-->onStart");}@Overridepublic void onResume() {super.onResume();System.out.println("RightFragment-->onResume");}@Overridepublic void onStop() {super.onStop();System.out.println("RightFragment-->onStop");}@Overridepublic void onPause() {super.onPause();System.out.println("RightFragment-->onPause");}//摧毁视图@Overridepublic void onDestroyView() {super.onDestroyView();System.out.println("RightFragment-->onDestroyView");}@Overridepublic void onDestroy() {super.onDestroy();System.out.println("RightFragment-->onDestroy");}//当当前Fragment与Activity解除联系的一瞬间触发的方法@Overridepublic void onDetach() {super.onDetach();System.out.println("RightFragment-->onDetach");}
}

最后一部,就是写MainActivity了,代码如下:

package com.holly.mytest4;import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;import android.os.Bundle;public class MainActivity extends FragmentActivity implements LeftFragment.ListViewItemClickListener{RightFragment rightFragment ;FragmentManager fm ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();System.out.println("MainActivity-->onCreate");}private void init() {fm = getSupportFragmentManager();//通过FragmentManager找到需要操作的fragmentrightFragment = (RightFragment) fm.findFragmentById(R.id.right_fragment);}@Overrideprotected void onStart() {super.onStart();System.out.println("MainActivity-->onStart");}@Overrideprotected void onResume() {super.onResume();System.out.println("MainActivity-->onResume");}@Overrideprotected void onPause() {super.onPause();System.out.println("MainActivity-->onPause");}@Overrideprotected void onStop() {super.onStop();System.out.println("MainActivity-->onStop");}@Overrideprotected void onDestroy() {super.onDestroy();System.out.println("MainActivity-->onDestroy");}@Overridepublic void onItemClick(String content) {rightFragment.setTextViewText(content);}
}

好了,到这里就写完了,注意看哦,MainActivity是实现了LeftFragment里面的ListViewItemClickListener方法,千万不要漏掉了,最后附上我的项目结构图,因为只是测试,所以没有把fragment分类哦

Fragment如何实现左右分屏显示的相关推荐

  1. PreferenceActivity 分屏显示 分析

    先上效果图: PreferenceActivity 设置代码如下,通过getListView 遍历视图结构,主要调整间距与背景色 package com.example.testsettings;im ...

  2. pycharm 如何将同一项目中不同模块代码分屏显示

    如图,想把这两个模块代码分屏显示 直接拖动其中一个代码的标签到另一个屏幕上 点击全屏显示

  3. c语言文件分屏显示,通用子目录文件显示方法

    通用子目录文件显示方法 在用CHKDS/V对磁盘子目录及子目录文件进行查找时,由于输出显示信息没有分屏显示,很容易错过需要的信息,并且显示信息没有标记出隐藏的子目录名及子目录文件名,这样就对进一步的子 ...

  4. Intellij IDEA中分屏显示方法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 今天才发现IDEA中还有split view的功能,上网查的时候查到了很多莫名其妙的东西. 实际上对 ...

  5. Altium AD20分屏显示,交叉选择模式使用,原理图和PCB器件的同步选择

    AD20可以使用 分屏显示 和 交叉选择,实现对元件快速定位.分类.布局的功能,提高设计效率. 原理图.PCB分屏显示 图纸页 - 右键 - 垂直分割.就会变为分屏显示,搭配双屏使用更加舒适. 交叉选 ...

  6. c# Winform 开发分屏显示应用程序

    c# Winform 开发分屏显示应用程序 原文 http://blog.csdn.net/soft2buy/article/details/7082668 分屏显示即可把一台主机内运行的多个程序分别 ...

  7. Android分屏显示(多窗口支持) 开发总结

    最近公司有分屏显示需求,遇到几点问题 ,在此记录,以做备忘. 我所谓的分屏显示,是在同一个界面内,分屏显示两个app的界面 或者是 注意点1: 系统好像没有获取应用显示的左右或者上下位置的方法,所以我 ...

  8. Android分屏显示

    1,定义 Android N以上系统支持的模式,可上下,左右分屏显示,画中画,多窗口模式 2,方式 要是全局分屏,可在application里设置标签resizeableActivity为true & ...

  9. android分屏模式_Android分屏显示总结

    1. 基础原理 1.1 ActivityRecord.TaskRecord.ActivityStack关系 一个ActivityRecord对应着一个Activity,而一个Activity可能对应着 ...

最新文章

  1. PyTorch官方教程大更新:增加标签索引,更加新手友好
  2. laravel 安装配置前准备
  3. 双11稳定性负责人叔同讲述:九年双11的云化架构演进和升级
  4. Git初学使用命令记录
  5. 关于HbSrv.exe
  6. c语言变量强制转换,C语言——“=”中的强制类型转换
  7. 开放 Rake 打包项目
  8. matlab绘图和python绘图
  9. css字体向下来电,css系列之关于字体的事
  10. leapftp 软件,leapftp 软件的5大功能
  11. python讲师陈越_浙大陈越老师数据结构课件
  12. [Builder]代码中android版本的判断[from oschina.亭子happy]
  13. 六级通关笔记--词汇1
  14. ICDAR 2019 CROHME + TFD比赛 手写数学表达识别与排版公式检测的竞争
  15. XSS靶场prompt.ml过关详解
  16. JAVA集合和字符串互转
  17. NBA勇士败给残阵湖人后....
  18. codeforces 1326 E.Bombs
  19. 加强立法规制个人信息滥用
  20. UIQ来电监听挂断原理和代码

热门文章

  1. STM32CubeIDE 遇到的问题
  2. STM32 CubeIDE 断点失效的解决方法
  3. bom成本分析模型_拆解苹果HomePod发现BoM成本高达248.4美元
  4. 一款自制calendar插件
  5. 过拟合与欠拟合的生动理解
  6. Contour 学习笔记(一):使用 Contour 接管 Kubernetes 的南北流量
  7. 微信公众平台iPhone版内测开始了
  8. 苹果安卓APP下载地址合并为一个二维码
  9. 2022年第十七届研电赛报名|安谋科技(Arm China)命题:基于特定开发平台的理性智能体设计
  10. win7家庭版计算机添加用户,win7家庭版怎样设置来宾用户权限