android仿时间轴

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

       
    其实只不过是布局+动态生产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());
		}
	}

}
我的博客其他文章列表
http://my.oschina.net/helu

转载于:https://my.oschina.net/helu/blog/148548

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值