作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 LinearLayout
(我们称它为 A)它的宽度设置为 fill_parent
,这个布局包含一堆另一个 LinearLayouts
(我们称它们为 B),我希望屏幕只显示 四个 B,所以我分配了 weight_sum
A 为 4
并将每个 B 分配为 1
,现在我想添加一个 HorizontalScrollView
因此,如果我有 6 个 B 布局,则只会显示四个,另外两个会滚动。我 build 了这个 HorizontalScrollView
包含 A 布局(因为 HorizontalScrollView
应该只有一个直接子级),现在我添加到布局 A 的 fill_parent 宽度被破坏了,因为它现在服从HorizontalScrollView
所以 B 布局宽度也被破坏了,看看下面的数字:
-- 黄色:整个屏幕。
-- green :A 布局。
-- red :B 布局。
我得到的结果:
我想得到的结果:
我尝试设置 HorizontalScrollView
的宽度和布局 A 到 fill_parent
和/或 wrap_content
但对我没有任何作用。
我的 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 完成此操作,你需要一些动态代码来测量屏幕的宽度,然后以编程方式将每个线性布局(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
关于android - 如何在 HorizontalScrollView 中设置线性布局宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20858958/
我是一名优秀的程序员,十分优秀!