在不同的物理螢幕下,可以自由設定某控制項占有螢幕寬度的大小,方法如下:
使輸入框的寬度與螢幕寬度對應
現在的布局被設計成edittext和button這兩個控制項的大小和它們的內容相適應,如圖2所示:
圖2. 寬度設定為「wrap_content」後的edittext
和button
這樣做對於按鈕來說沒有什麼問題,但是對文字框來說可能就不太好,因為使用者可能會輸入更長的字串。所以最好是螢幕中沒有用到的寬度給文字框使用。我們可以在linearlayout中使用比重(weight)屬性來實現,具體來說是使用android:layout_weight這一屬性字段。
比重的值是乙個數字,這個數字用來表徵每個view相對於它兄弟view所消耗的空間來說,可以使用的剩餘的空間大小。可以理解為飲料的配方:「2份伏特加和1份咖啡甜酒」,這就意味著飲料中的三分之二是伏特加。例如:如果你給了乙個view的比重是2,而另乙個view的比重是1,那麼他們的和是3,所以第乙個view消耗剩餘空間的三分之二,而第二個view消耗三分之一。如果你又新增了第三個view,它的比重是1,那麼現在第乙個view將會獲得剩餘空間的一半,另外兩個則是四分之一。
預設所有的view的比重是0,所以如果你僅對乙個view的比重定義為大於0的任何數,那麼這個view將會拿到剩餘的所有空間,而其他view則僅擁有他們所需要的空間。所以,為了讓edittext把剩餘空間填滿,把它的比重設定為1,同時讓按鈕沒有比重就可以實現了。
<當你定義了比重時,為了提高布局的效率,我們把edittext
android:layout_weight
="1"
...
/>
edittext的寬度設定為0(0dp)。將寬度設定為0有利於提高布局效能,因為使用"wrap_content"作為寬度的話需要系統計算控制項的寬度,而這是不必要的,因為這個寬度值需要另乙個控制項的寬度計算結果,以此來進一步的填滿螢幕的寬度。
<圖3展示了把比重全部分配給edittext
android:layout_weight
="1"
android:layout_width
="0dp"
...
/>
edittext後的執行結果:
圖3. edittext擁有了布局的所有比重,所以它填滿了linearlayout剩餘的空間
現在,修改後的布局檔案應該是這樣的:
xml version="1.0" encoding="utf-8"?>
<
linearlayout
xmlns:android
=""xmlns:tools
=""android:layout_width
="match_parent"
android:layout_height
="match_parent"
android:orientation
="horizontal"
>
<
edittext
android:id
="@+id/edit_message"
android:layout_weight
="1"
android:layout_width
="0dp"
android:layout_height
="wrap_content"
android:hint
="@string/edit_message"
/>
<
button
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
android:text
="@string/button_send"
/>
linearlayout
>
android設定控制項的位置以及獲取控制項的座標
專案中遇到乙個問題,就是印表機打字的效果,然後找到了一位大神的輪子。android實用view系列 textview實現印表機效果 這樣確實實現了印表機打字的效果,但是又出現乙個問題。這個印表機的自定義view事先不能確定整體的高度,這樣,印表機每列印一行,高度就會變大一行,那麼在linear la...
佔Android的發展
農曆 戊子年十一月二十日亥時 大雪 2008年12月07日02時01分 小寒 2009年01月05日13時10分 干支 戊子年 甲子月 辛卯日 己亥時 日空 午未 神煞 驛馬 巳 桃花 子 日祿 酉 貴人 寅,午 艮宮 火澤睽 艮宮 天澤履 六神 伏神 本 卦 變 卦 騰蛇 父母己巳火 兄弟壬戌土 ...
Android 動態設定控制項的布局
在android開發中,常常會動態地生成些控制項,並調調整其布局。那麼,如何動態調整空間的布局,請參閱下面的關鍵 mrlmain relativelayout findviewbyid r.id.rlmain layoutparams layoutparams new layoutparams an...