福田网站建设论文结论,万维企业名录搜索软件,内蒙古包头做网站的公司,城乡建设部注册建筑师网站文章目录Item#xff1a;标题子项布局文件Java代码标题碎片布局文件Java代码新闻内容碎片布局文件Java代码新闻内容活动布局文件Java代码首界面布局文件Java代码Item#xff1a;标题子项
布局文件 news_item.xml#xff1a;
TextViewxmlns:androidhttp://schema…
文章目录Item标题子项布局文件Java代码标题碎片布局文件Java代码新闻内容碎片布局文件Java代码新闻内容活动布局文件Java代码首界面布局文件Java代码Item标题子项
布局文件 news_item.xml
TextViewxmlns:androidhttp://schemas.android.com/apk/res/androidandroid:idid/news_titleandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:lines1android:ellipsizeendandroid:textSize18spandroid:paddingLeft10dpandroid:paddingRight10dpandroid:paddingTop15dpandroid:paddingBottom15dp/TextViewpadding给控件周围加上补白避免文本内容紧靠边缘lines规定文本内容只能单行显示ellipsize设定当文本内容超出控件宽度时文本的略缩方式 Java代码
public class News {private String title; // 标题private String content; // 内容public void setTitle(String title) {this.title title;}public String getTitle() {return title;}public void setContent(String content) {this.content content;}public String getContent() {return content;}
} 标题碎片
布局文件 news_title_frag.xml
LinearLayoutxmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationverticalandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroidx.recyclerview.widget.RecyclerViewandroid:idid/news_title_recycler_viewandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent/
/LinearLayoutJava代码
public class NewsTitleFragment extends Fragment {Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view inflater.inflate(R.layout.news_title_frag, container, false);// 滚动控件实例RecyclerView newsTitleRecyclerView view.findViewById(R.id.news_title_recycler_view);// 布局方式LinearLayoutManager layoutManager new LinearLayoutManager(getActivity());// 设置RecyclerView布局方式为线性布局newsTitleRecyclerView.setLayoutManager(layoutManager);// 为布局添加适配器newsTitleRecyclerView.setAdapter(new NewsAdapter(getNews()));return view;}// 创建一个ListNews并返回private ListNews getNews(){ListNews newsList new ArrayList();for(int i1; i50; i){News news new News();news.setTitle(News Title i);news.setContent(getRandomLengthContent(News Contenti.));newsList.add(news);}return newsList;}// 随机生成新闻内容private String getRandomLengthContent(String content){Random random new Random();int length random.nextInt(20)1;StringBuilder builder new StringBuilder();for(int i0; ilength; i){builder.append(content);}return builder.toString();}// 以内部类形式实现自定义适配器class NewsAdapter extends RecyclerView.AdapterNewsAdapter.ViewHolder{private ListNews NewsList;class ViewHolder extends RecyclerView.ViewHolder {TextView newsTitleText;public ViewHolder(View itemView) {super(itemView);newsTitleText itemView.findViewById(R.id.news_title);}}public NewsAdapter(ListNews newsList){NewsList newsList;}Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view LayoutInflater.from(parent.getContext()).inflate(R.layout.news_item, parent, false);final ViewHolder holder new ViewHolder(view);// 点击RecyclerView中的新闻标题时启动NewsContentActiviryview.setOnClickListener((View v)-{// 获取点击项的News实例News news NewsList.get(holder.getAdapterPosition());/* 单页模式 */// 启动新的活动显示新闻内容NewsContentActiviry.actionStart(getActivity(), news.getTitle(), news.getContent());/* 双页模式 *//*NewsContentFragment newsContentFragment (NewsContentFragment) getParentFragmentManager().findFragmentById(R.id.news_content_fragment);newsContentFragment.refresh(news.getTitle(), news.getContent());*/});return holder;}Overridepublic void onBindViewHolder(ViewHolder holder, int position) {News news NewsList.get(position);holder.newsTitleText.setText(news.getTitle());}Overridepublic int getItemCount() {return NewsList.size();}}
}新闻内容碎片
布局文件
news_content_frag.xml
RelativeLayoutxmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentLinearLayoutandroid:idid/visible_layoutandroid:orientationverticalandroid:visibilityinvisibleandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentTextViewandroid:idid/news_titleandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:gravitycenterandroid:textSize20spandroid:padding10dp/Viewandroid:layout_widthmatch_parentandroid:layout_height1dpandroid:background#000/TextViewandroid:idid/news_contentandroid:layout_widthmatch_parentandroid:layout_height0dpandroid:layout_weight1android:textSize18spandroid:padding15dp//LinearLayoutViewandroid:layout_width1dpandroid:layout_heightmatch_parentandroid:layout_alignParentLefttrueandroid:backgroundcolor/black //RelativeLayout内嵌的 LinearLayout 布局用于管理新闻内容碎片的布局。两个 TextView 分别表示新闻标题与新闻内容。两个 View 是两条黑色分割线第一个用于在新闻内容碎片中分割新闻标题与新闻内容第二个用于在双页模式下分割新闻内容碎片和标题碎片。外层使用 RelativeLayout 布局是为了便于布置第二个 View。android:layout_alignParentLeft 属性
单页模式
双页模式
PS竖直黑色分割线左侧属于标题碎片跟新闻内容碎片无关。 Java代码
public class NewsContentFragment extends Fragment {private View view;// 加载布局Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {view inflater.inflate(R.layout.news_content_frag, container, false);return view;}// 将新闻标题和内容显示到界面上public void refresh(String newTitle, String newContent){View view1 view.findViewById(R.id.visible_layout);view1.setVisibility(View.VISIBLE);TextView title view.findViewById(R.id.news_title);TextView content view.findViewById(R.id.news_content);title.setText(newTitle); // 刷新新闻标题content.setText(newContent); // 刷新新闻内容}
}新闻内容活动
布局文件
在单页模式下点击标题碎片中的标题子项时会根据点击的新闻标题跳转到具体的新闻内容活动
LinearLayoutxmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentfragmentandroid:idid/news_content_fragmentandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:namecom.example.activitytest.Fragment.NewsContentFragment//LinearLayoutJava代码
public class NewsContentActiviry extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView((R.layout.news_content));String newsTitle getIntent().getStringExtra(news_title);String newsContent getIntent().getStringExtra(news_content);NewsContentFragment newsContentFragment (NewsContentFragment) getSupportFragmentManager().findFragmentById(R.id.news_content_fragment);newsContentFragment.refresh(newsTitle, newsContent); // 刷新NewsContentFragment界面}public static void actionStart(Context context, String newsTitle, String newsContent){Intent intent new Intent(context, NewsContentActiviry.class);intent.putExtra(news_title, newsTitle);intent.putExtra(news_content, newsContent);context.startActivity(intent);}
}有关 actionStart 详见本文 首界面
布局文件
news_layout.xml 注释部分解除之后即从单页布局变为双页布局
LinearLayoutxmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationhorizontalandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentfragmentandroid:idid/news_title_fragmentandroid:namecom.example.activitytest.Fragment.NewsTitleFragmentandroid:layout_width0dpandroid:layout_heightmatch_parentandroid:layout_weight1/!--FrameLayoutandroid:idid/news_content_layoutandroid:layout_width0dpandroid:layout_heightmatch_parentandroid:layout_weight3fragmentandroid:idid/news_content_fragmentandroid:namecom.example.activitytest.Fragment.NewsContentFragmentandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent//FrameLayout--
/LinearLayout单页布局 双页布局 Java代码
public class NewsActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.news_layout);}
}