我想知道每次我需要将View的大小(宽度或/和高度)设置为其父级大小的函数(例如width = 0.5 * parent_size)时,我必须创建自定义视图和覆盖onMeasure()或有没有办法使用XML? 提前谢谢!
编辑:
我想要实现的是:放置一个左对齐的视图,宽度等于父宽度的1/10,高度等于父高度的1/5。等等其他观点。
答案 0 :(得分:1)
以下是两个嵌套的LinearLayouts和左上角的TextView的答案,TextView是宽度的10%和高度的10%。 只是为了证明它只适用于一种观点。
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:weightSum="10"
android:background="#FF0000"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="0dp"
android:orientation="vertical"
android:weightSum="10"
android:background="#00FF00"
android:layout_weight="1"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="#000000"
android:layout_weight="1"
android:text="Hello"
android:textColor="#FFFFFF"
/>
</LinearLayout>
</LinearLayout>
答案 1 :(得分:0)
我必须创建自定义视图并覆盖
onMeasure()
或者是否有 使用XML的方法吗?
使用XML Layout文件无法实现目标。
您必须动态管理此视图。您的第二种方法是正确的方法。
您需要根据自己的功能创建动态视图并制作onMeasure()
方法。
答案 2 :(得分:0)
你可以使用LinearLayout作为容器和android:layout weight属性。您可以在此处阅读更多信息:developer.android.com/guide/topics/ui/layout/linear.html#Weight
因此,如果您只想添加一个元素,可以添加权重= 1的视图和权重= 9的一个元素。但是如果你想在一行中添加10个视图(每个高度的1/10) - 你可以使用GridView或TableLayout。