AndroidDev 板


LINE

我想要做一個記事軟體,做了一個linearlayout,結構如下。 自製linearlayout的名稱:a01 ______________________ | | | ____________________ | || || || textview || textview顯示這個月是哪一天。 ||____________________|| (EX: 9/6,那麼texview就會顯示 "6" ) | ____________________ | || || || || gridview 會顯示正方形色塊(顏色只是代表事情的緊急度) || gridview || ,假設有三個色塊,那就代表這天你有三件事情要做。 || || || || || || || || || || || || ||____________________|| | | |______________________| 然後這樣一份layout,會在fragment用include包起來使用,會重複35次使用 ,排成7*5的形式。 如下: a01 a01 a01 a01 a01 a01 a01 a01 . . . . . . . . . a01 a01 . . . . . . . . . . . a01 . . . . . . . . . . . a01 . . . . . . . . . a01 我想要讓每一份a01都能點選,只要能夠辨識出手指點到的是哪一份a01就可以了。 目的是想讓使用者點選到其中一個a01,會在另一份fragment顯示相對應的資料。 我有試過使用focus,但是他只會在我點到textview時有作用, 但是我點gridview時就不會有focus事件發生,請問這如何解? --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.136.130.57 ※ 編輯: lulucat 來自: 140.136.130.57 (09/25 11:52)
1F:→ ted66:動態產生的時候給一個ID,這樣應該可以抓到 09/25 14:00
我有給每個a01設定ID,因為是包在include裡面使用,ID是設給include,再用include 去抓裡面的Linearlayout。 現在是可以抓到各個textview的focus,但是因為textview占整個linearlayout一小部分 ,手指按的空間太小,我是希望能手指按到整個linearlayout去找focus,問題是, 按gridview不會有反應。 ※ 編輯: lulucat 來自: 140.136.130.57 (09/25 14:15) ※ 編輯: lulucat 來自: 140.136.130.57 (09/25 15:39)
2F:推 zxc190:android:descendantFocusability="blocksDescendants" 09/25 22:30
3F:→ zxc190:試試在XML的LinearLayout加上這個屬性 09/25 22:31
我加入這段就會出錯,而且還發現,我能夠找到focus是因為有setOnClickListener, 要是沒有監聽onclick,那麼我監聽focus也無法focus到手指點的textview。 還是有沒有其他辦法讓我達成類似效果,只要能夠顯示幾月幾號和色塊就可以了, 我想很久都想不出做出這類效果的其他方法。 ※ 編輯: lulucat 來自: 140.136.130.57 (09/26 10:21) 以下是我自製layout的code。 我把這段code放到a01.xml,a01.xml是tablelayout,在裡面放一個DayTag 然後再fragment不斷使用include引用a01.xml,做出7*5的表格。 public class DayTag extends LinearLayout { private static final String tag = "DayTag.java"; private Context context; private TextView day; private GridView tagview; private GridAdapter gridAdapter; public DayTag(Context context) { super(context); this.context = context; findview(); setting(); } public DayTag(Context context, AttributeSet attrs) { super(context, attrs); findview(); setting(); } public DayTag(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); this.context = context; findview(); setting(); } //設定非本月的日子,畫面成淡色 public void setNotDayOfThisMonth(){ setAlpha((float) 0.5); } public void setCalenderTag(ArrayList<MonthCalender> list) { ArrayList<Tag> taglist = new ArrayList<Tag>(); for (MonthCalender i : list) { Tag t = new Tag(i.getAccount(), i.getYear(), i.getMonth(), i.getDay(), i.getId(),i.getTag_color(), i.getIsComplete()); taglist.add(t); } gridAdapter.setTag(taglist); } public void setSize(int size) { gridAdapter.setSize(size); } public void setText(String msg) { day.setText(msg); } //基本設定 public void setting() { setBackgroundResource(R.color.white); setFocusable(true); setFocusableInTouchMode(true); setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS); tagview.setNumColumns(10); ViewGroup.LayoutParams layoutParams = tagview.getLayoutParams(); layoutParams.height = 130; } public void findview() { day = new TextView(context); tagview = new GridView(context); gridAdapter = new GridAdapter(context); tagview.setAdapter(gridAdapter); addView(day); addView(tagview); day.setText("請輸入日期"); } private class GridAdapter extends BaseAdapter { private Context context; private ArrayList<Tag> list = new ArrayList<Tag>(); private int size; public GridAdapter(Context context) { this.context = context; } public void setSize(int size) { this.size = size; } public void setTag(ArrayList<Tag> list) { this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView iv = (ImageView) convertView; if (iv == null) { iv = new ImageView(context); iv.setLayoutParams(new GridView.LayoutParams(size, size)); iv.setScaleType(ImageView.ScaleType.FIT_CENTER); iv.setPadding(2, 2, 2, 2); } //判斷是否完成,決定標籤的顯示 if(list.get(position).getIsComplete() == 0) { //未完成 iv.setImageResource( Integer.parseInt(list.get(position) .getTag_color())); } else { //已完成 iv.setImageResource(R.color.black); } return iv; } } private class Tag { private String account; private int year; private int month; private int day; private int id; private String tag_color; private int isComplete; . . . . } } ※ 編輯: lulucat 來自: 140.136.130.57 (09/26 12:09) ※ 編輯: lulucat 來自: 140.136.130.57 (09/26 12:32) ※ 編輯: lulucat 來自: 140.136.130.57 (09/26 12:36) ※ 編輯: lulucat 來自: 118.161.252.31 (09/26 12:58)
4F:推 tac0wu:why not post code here http://ideone.com/ 09/26 22:34
5F:推 tac0wu:用onTouchEvent 硬幹也不是不行 XDD 09/26 22:42
6F:推 tac0wu:直接在你的DayTag上設click listener會有甚麼問題嗎? 09/26 23:00
我試著使用onTouchEvent,但是這跟之前發生的情況還是一樣,只對textview有反應, 所以我想就還是先用onTouchEvent,至於gridview點選不到的問題就先不管了, 不然我的東西不會有進度。 但還是希望有人能提出解法,我想是必須重整個layout著手,只是目前我想不到要怎麼弄 。 ※ 編輯: lulucat 來自: 118.161.252.31 (09/27 22:13)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP