本文小编为大家详细介绍“Android中如何实现一个时间轴效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android中如何实现一个时间轴效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
我们提供的服务有:成都网站制作、网站建设、外贸网站建设、微信公众号开发、网站优化、网站认证、嘉善ssl等。为近千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的嘉善网站制作公司
其实只不过是布局+动态生产TextView罢了,一开始选的是 FrameLayout,后来发现在处理单击事件的时候一个问题 ,例如:
FrameLayout frameLayout= (FrameLayout) findViewById(R.id.frameLayout); for(...){ frameLayout.add(tv1); frameLayout.add(tv2); //在这里直接处理单击事件肯定是不行的,tv1和tv2是重合在一起的 } FrameLayout frameLayout= (FrameLayout) findViewById(R.id.frameLayout); for(...){ tv1.setLayoutparams(....); frameLayout.add(tv1); frameLayout.add(tv2); //在这里直接处理单击事件就可以了,不知道为什么? }
所以,直接改 成Linearlayout了,改成Linearlayout后,那些TextView的位置也好设置多了,下面是代码:
package com.lliq.ui; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; import com.lliq.R; public class HistoryActivity extends Activity { private final int space_year = 5; private final int space_month = 5; private String[] year = { "2010", "2011", "2012", "2013" }; private String[][] month = { { "01", "03", "04", "11" }, { "07" }, { "01", "03", "04", "11" }, { "07" } }; boolean menu_falg = false;// 单击改变菜单图标 private TextView[] tv_year; private TextView[] tv_month; private TextView content; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.iq_history); initLayout(); } private void initLayout() { LinearLayout btnback = (LinearLayout) findViewById(R.id.history_layouthome); final TextView btnhome = (TextView) findViewById(R.id.history_btnhome); btnback.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { menu_falg = !menu_falg; btnhome.setBackgroundResource(menu_falg ? R.drawable.menuspread : R.drawable.menu_n); MainActivity.handler.sendEmptyMessage(0); } }); content = (TextView) findViewById(R.id.content); LinearLayout timelayout = (LinearLayout) findViewById(R.id.timelayout); tv_year = new TextView[year.length]; for (int i = 0; i < year.length; i++) { tv_year[i] = new TextView(this); tv_year[i].setPadding( 10, i == 0 ? space_year : space_year * (13 - Integer.parseInt(month[i - 1][month[i - 1].length - 1])), 0, 0); tv_year[i].getPaint().setFakeBoldText(true); tv_year[i].setTextSize(14); tv_year[i].setTag(year[i]); tv_year[i].setText(year[i] + " --"); tv_year[i].setOnClickListener(new TimeLineClickListener(tv_year[i])); timelayout.addView(tv_year[i]); tv_month = new TextView[year.length]; for (int j = 0; j < month[i].length; j++) { tv_month[i] = new TextView(this); if (j == 0) { tv_month[i].setPadding(20, space_month * Integer.parseInt(month[i][j]), 0, 0); } else { tv_month[i].setPadding(20, space_month * (Integer.parseInt(month[i][j]) - Integer.parseInt(month[i][j - 1])), 0, 0); } tv_month[i].setTextSize(12); tv_month[i].setText(month[i][j] + "月 --"); tv_month[i].setTag(year[i] + "-" + month[i][j]); tv_month[i].setOnClickListener(new TimeLineClickListener(tv_month[i])); timelayout.addView(tv_month[i]); } } } class TimeLineClickListener implements OnClickListener { TimeLineClickListener(View v) { } @Override public void onClick(View v) { content.setText(v.getTag().toString()); } } }
读到这里,这篇“Android中如何实现一个时间轴效果”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注创新互联行业资讯频道。