您好,登錄后才能下訂單哦!
這篇文章給大家介紹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()); } } }
關于Android中怎么實現一個時間軸效果就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。