官术网_书友最值得收藏!

2.2.6 AdaptiveBoxLayout

AdaptiveBoxLayout 是自適應盒子布局,可以根據所盛放的組件大小進行自適應,使用起來非常靈活,在一定程度上可以用于解決不同尺寸、不同分辨率設備上的頁面適配問題。不同的設備由于尺寸、分辨率不同,如果使用同一套布局往往會產生意想不到的效果。

圖2-29 PositionLayout的示例

下面實現一個 AdaptiveBoxLayout,分別在電視和手機上進行顯示。

<?xml version="1.0" encoding="utf-8"?>

在電視和手機上的預覽效果如圖2-30所示。

圖2-30 自適應盒子布局在不同設備上的顯示效果

從圖2-30中可以看到,對于不同尺寸的屏幕,AdaptiveBoxLayout在水平方向上的顯示變得不同,在水平方向屏幕比較寬的電視上,自適應盒子布局變成了兩列,而在水平方向屏幕比較窄的手機上,則顯示為1列。

在不同尺寸的屏幕上,水平方向有多少個盒子是由 AdaptiveBoxLayout 自動計算得到的。在布局中,每個盒子的寬度固定由布局總寬度除以列數得到。因為盒子的寬度是自動計算得到的,所以組件的寬度不支持match_content,但支持match_parent,即計算出來的盒子的寬度。計算規則可以自己來設定。

實現自適應盒子布局的Java代碼如下。

主站蜘蛛池模板: 宁晋县| 吴江市| 通渭县| 玛曲县| 永春县| 神农架林区| 黑龙江省| 吉首市| 宁强县| 通道| 施秉县| 新乐市| 博客| 霍城县| 镶黄旗| 洪泽县| 楚雄市| 昭觉县| 建始县| 东源县| 文昌市| 桂东县| 明溪县| 临泉县| 白山市| 柘城县| 资阳市| 逊克县| 友谊县| 阿图什市| 关岭| 县级市| 潼南县| 遵化市| 志丹县| 高唐县| 马鞍山市| 加查县| 将乐县| 澜沧| 宁南县|