[問題] 請問 android 的 xml 怎麼動態呼叫
題目不是講得很清楚
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
05/13 14:30, 1F
→
05/13 14:37, , 2F
05/13 14:37, 2F
re-parse 一部份,然後變成對應的內部 api 幫我 call 囉 :P
我的想法是,屬性是可以不斷增加的,而 api 很難再增加
所以追不上屬性的數量;但內部 private function 總有法子的
→
05/13 14:45, , 3F
05/13 14:45, 3F
沒,但我找到問題了 :P 見下述
推
05/13 16:30, , 4F
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
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
05/13 20:25, 6F
→
05/13 20:27, , 7F
05/13 20:27, 7F
→
05/13 20:27, , 8F
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
05/14 13:38, 9F
→
05/14 15:42, , 10F
05/14 15:42, 10F
→
05/14 22:13, , 11F
05/14 22:13, 11F
java 近期熱門文章
PTT數位生活區 即時熱門文章