下面来看看时间轴的实现,效果如下图


其实只不过是布局+动态生产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;@Overrideprotected 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(){@Overridepublic 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){}@Overridepublic void onClick(View v){content.setText(v.getTag().toString());}}}
我的博客其他文章列表
http://my.oschina.net/helu

更多相关文章

  1. Android(安卓)Activity中ActionBar上添加返回功能
  2. android 摄像头对焦,zoom的通知事件回调,告诉java应用层已经对焦完
  3. Android(安卓)Bitmap图片缩放优化,用canvas替代Matrix进行缩放,解
  4. Android手势传递一般过程及其规则研究
  5. 【Android(安卓)开发教程】添加ActionBar物件
  6. Android(安卓)屏幕旋转操作Demo
  7. Android展开/收缩列表 ExpandableListView 每次只能有一个项目是
  8. Android键盘事件处理流程
  9. Android使用NotificationManager进行消息推送

随机推荐

  1. Android开发艺术探索——第十章:Android的
  2. android studio生成JKS时候提示:JKS 密钥
  3. android扫描二维码(zxing)附带小例子
  4. Android上实现柱状图表
  5. Android(安卓)OpenGLES2.0(十三)——流畅的
  6. android gravity用法,我老是记不住
  7. 从零开始--系统深入学习android(实践-让我
  8. 包建强的培训课程(9):Android App性能优化
  9. Android(安卓)进阶之了解源码——Activit
  10. Android通过WebView与JS交互的全面方式