[問題] 請問 android 的 xml 怎麼動態呼叫

看板java作者 (吹笛牧童)時間8年前 (2016/05/13 12:59), 8年前編輯推噓1(1010)
留言11則, 3人參與, 最新討論串1/1
題目不是講得很清楚 1.其實是我有一個 HorizontalScrollView 元件,在 xml 中這樣描述 <HorizontalScrollView android:id="@+id/view1" android:scrollbars="none" android:layout_width="match_parent" android:layout_height="match_parent" > 若我有需要動態更改尺寸,座標,這些都不難,有相對應的 api 難就難在不是所有 xml 都有 api 這時就很希望可以直接控制 xml 如此例中的 android:scrollbars="none" 這一句 有時我希望有,有時希望沒有,若能動態控制 xml 會比較乾脆 2.另一個方法是呼叫 view1.setHorizontalScrollBarEnabled(horizontalScrollBarEnabled); 明明看文件,這就是我要的 但做下去卻不如預期 因此請教如何讓這個 api 動起來 以及當 api 不如預期時,有沒有動態控制 xml 的方法 (呼叫起來像 view1.parseXML("android:scrollbars=\"none\""); 這樣) 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.197.63 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1463115564.A.203.html

05/13 14:30, , 1F
xml的屬性只有在View的contructor傳入,怎麼使用這些屬性是
05/13 14:30, 1F

05/13 14:37, , 2F
View的內部實作,xml在inflate完就沒用了,不存在何來控制
05/13 14:37, 2F
re-parse 一部份,然後變成對應的內部 api 幫我 call 囉 :P 我的想法是,屬性是可以不斷增加的,而 api 很難再增加 所以追不上屬性的數量;但內部 private function 總有法子的

05/13 14:45, , 3F
至於set method無效的問題,有呼叫View.invalidate?
05/13 14:45, 3F
沒,但我找到問題了 :P 見下述

05/13 16:30, , 4F
2是對的,但不如預期不確定是怎麼一回事
05/13 16:30, 4F
其實我 google 很久,用我破破的英文看別人的說明,蠻辛苦 (大多是 stack overflow;這站名.. 堆疊滿出來?看了就覺得我程式壞了 :P) 有人說除了設 enable, 還必需要做個 initialize trace 進入 lib 的 source code 是有看到這個 initialize,但我呼叫不到啊 剛突然想通:我不能 initialize,但我可以一開始就 initialize 也就是說,xml 裡先設 none (disable) 然後在程式中以 api 設 enable, 這是打不開的 但反過來,xml 裡先 enable (其實都不要打,default 就是了) 然後程式中以 api 設 disable, 是關得掉的 這樣就行啦~ 原來是要用 default on 的寫法 :P ※ 編輯: HuangJC (60.251.197.63), 05/13/2016 19:19:05

05/13 20:24, , 5F
API怎麼會不能增加,屬性怎麼會可以增加?
05/13 20:24, 5F
我常常在看 source code 時覺得 "這 private function or variable 如果 public 給我用就好了" 那為什麼不 public? 不是能不能的問題,常是肯不肯的問題 c++ 還好,有時 protected 的,我就繼承一下,轉 public java 倒狠了,有一招叫 final, 不得再繼承 這... 是要我承認 java 在安全性鎖權限上更嚴密嗎? 那屬性為什麼我以為可以增加呢? 嗯,其實在 compiler 和 script 的比較上 script 常讓我覺得彈性超強;一開始沒說有的功能,以後再定義,再冒出來就好了 實際上我就是很多控制項覺得 xml 裡有,但相對的 api 沒有 因此我就是覺得不是做不到,而是不肯做 或要下一版才公開 我同事用很多 reflect function, 也讓我有這個感覺 這些功能早就寫好了,但就是封在肚子裡 API 是沒有,但繞個圈用 reflect 就拿出來了..

05/13 20:25, , 6F
Java API和XML attr一樣都是API的一部分,沒有哪個容易增加
05/13 20:25, 6F

05/13 20:27, , 7F
哪個不容易,你都看了source應該知道那些attr、value都是已
05/13 20:27, 7F

05/13 20:27, , 8F
經compile成對應的Java constant了吧
05/13 20:27, 8F
看 source 也常讓我覺得很奇怪,經常行數是不對的 IDE 的優勢,步進執行,因此無法使用 再說到版本問題好了,我的 java 環境可能裝了 API 17, 但我的手機上的 OS 是 API 19;就不同版本啊 那它骨子裡到底是怎麼做的? 也許只有 API 窗口是對的,用上了類似 win os 裡 DLL 的技術 (沒法子,我就是對 win os 比較熟,所以我用 DLL 來形容它) DLL 是執行時期才去找尋 function 位置的,靠的是序號,或者 function name(字串) 老實說我覺得和 reflect 很像 因此 IDE 無法準確的跳行數,可能就這個問題 (其實 win os 下寫 vc, 在 dll 上也可能跳不準;如果版本不同的話 我想原因都類似的) 所以 source code 其實是讓我從完全無法下手,變成多少可以猜一點而已 XD 有很多東西仍然是未知的 XDDDD ※ 編輯: HuangJC (114.136.55.123), 05/14/2016 00:14:38

05/14 13:38, , 9F
把targetSDK設成跟裝置一樣,就會用那版的source
05/14 13:38, 9F

05/14 15:42, , 10F
那行數就會準?!有機會試試,謝謝
05/14 15:42, 10F

05/14 22:13, , 11F
之前有遇過看source找不到原因的錯誤,結果是新版已修的bug
05/14 22:13, 11F
文章代碼(AID): #1NDLyi83 (java)