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