Android和查看大小

时间:2015-02-26 12:12:50

标签: android android-layout

我想知道每次我需要将View的大小(宽度或/和高度)设置为其父级大小的函数(例如width = 0.5 * parent_size)时,我必须创建自定义视图和覆盖onMeasure()或有没有办法使用XML? 提前谢谢!

编辑:

我想要实现的是:放置一个左对齐的视图,宽度等于父宽度的1/10,高度等于父高度的1/5。等等其他观点。

3 个答案:

答案 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。