相应地调整视图高度和宽度

时间:2015-06-19 16:21:57

标签: android xml

我有以下xml实现。但是,如下所示,高度和宽度是硬编码的,即使这些值适用于Nexus 10.但是它在Nexus 7上无法正常工作。

我需要知道有没有办法处理它像百分比?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mainView"
    android:background="#0000FF">
<View
        android:layout_width="220dp"
        android:layout_height="wrap_content"
        android:id="@+id/view1"
        android:background="#000000"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true" />
<View
        android:layout_width="wrap_content"
        android:layout_height="360dp"
        android:id="@+id/view2"
        android:background="#00FF0000"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" />
<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="44dp"
        android:layout_below="@id/view2"
        android:id="@+id/view3"
        android:background="#000000"
        android:layout_alignLeft="@id/view2"
        android:layout_alignParentRight="true">
 <View
        android:layout_width="wrap_content"
        android:layout_height="360dp"
        android:layout_toRightOf="@id/view1"
        android:id="@+id/view4"
        android:background="#00FF0000"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" />
</RelativeLayout

这是布局设计

enter image description here

我不想将relativelayout转换为线性布局的原因,因为我在view2view 4的顶部添加了一个透明视图来接收手势事件。

2 个答案:

答案 0 :(得分:2)

将整个布局更改为线性布局。现在根据需要相应地增加重量。我没有增加重量。这只是一个示例代码。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">

<View
    android:layout_width="220dp"
    android:layout_height="wrap_content"
    android:background="#000000" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <View
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:background="#ffffff" />

    <View
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:background="#000000" />

    <View
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#bbbbbb" />


</LinearLayout>

答案 1 :(得分:1)

要指定百分比,您需要以编程方式执行或者您可以将其包装在LinearLayout中:

<LinearLayout
    android:orientation="vertical">
    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
</LinearLayout>

在上面的示例中,View中所有LinearLayout s的高度相同。这意味着如果LinearLayout的高度为300dp,则每个View的高度为100dp。