[英]How to set the linear layout width in a HorizontalScrollView?
我有一個LinearLayout
(我們稱之為A ),它的寬度設置為fill_parent
,這個布局包含一堆另一個LinearLayouts
(我們稱之為B ),我希望屏幕只顯示四個 B ,所以我將A的weight_sum
指定為4
並將B中的每一個分配為1
,現在我想添加一個HorizontalScrollView
這樣如果我有6個B的布局,將只顯示四個,另外兩個將被滾動。 我構建這個HorizontalScrollView
以包含A布局(因為HorizontalScrollView
應該只有一個直接子項),現在我添加到布局A的fill_parent寬度被破壞,因為它現在服從HorizontalScrollView
所以B布局寬度也被破壞,取一個看下面的數字:
- 黃色 :整個屏幕。
- 綠色 : 布局 。
- 紅色 : B布局。
結果我得到了:
結果我想得到:
我試圖將HorizontalScrollView
和Layout A的寬度設置為fill_parent
和/或wrap_content
但沒有任何對我fill_parent
。
我的XML代碼:
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/A"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="4" >
<LinearLayout
android:id="@+id/B1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:weightSum="1" >
<LinearLayout
android:id="@+id/icon1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
android:layout_marginTop="15dp"
android:layout_weight="0.5"
android:background="@drawable/ac_overlay"
android:orientation="horizontal"
android:tag="normal" >
</LinearLayout>
<LinearLayout
android:id="@+id/icon2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
android:layout_marginTop="15dp"
android:layout_weight="0.5"
android:background="@drawable/ac_overlay"
android:orientation="horizontal"
android:tag="normal" >
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/B2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:weightSum="1" >
<LinearLayout
android:id="@+id/icon3"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
android:layout_marginTop="15dp"
android:layout_weight="0.5"
android:background="@drawable/ac_overlay"
android:orientation="horizontal"
android:tag="normal" >
</LinearLayout>
<LinearLayout
android:id="@+id/icon4"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
android:layout_marginTop="15dp"
android:layout_weight="0.5"
android:background="@drawable/ac_overlay"
android:orientation="horizontal"
android:tag="normal" >
</LinearLayout>
</LinearLayout>
</LinearLayout>
</HorizontalScrollView>
您無法僅從xml完成此操作,您需要一些動態代碼來測量屏幕的寬度,然后以編程方式將每個linearlayout(icon1,icon2等)的寬度設置為此的1/4寬度。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(metrics.widthPixels/4, LayoutParams.MATCH_PARENT);
LinearLayout icon1 = (LinearLayout) findViewById(R.id.icon1);
icon1.setLayoutParams(params);
//etc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.