5

我正在 Android 中制作一个布局(XML 文件),它有两个子视图(一个在屏幕右侧,一个在左侧)。我希望右边的视图占据一个预先确定的空间(以 dp 为单位)并让左边的视图占据所有剩余空间直到一个限制,此时它将停止扩展并且两个布局将只是随着屏幕变大,距离更远。

奇怪的是,如果我希望右侧的视图是扩展的视图,而左侧的视图是占用预设空间的视图,这将非常容易。如果您将每个视图设置为您想要的宽度(在水平线性布局中),如果两个视图都不适合,Android 将自动缩小左侧的一个。

我想在一个布局文件中执行此操作;此布局已经为 sw512dp-land 和 sw765dp-land 之间的显示器设计。

如果我能找到一种方法让 Android 缩小左侧的布局(当布局都不能适应指定的大小时),下面的代码将起作用。但默认情况下,系统会先收缩右边的布局。

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

<RelativeLayout
    android:id="@+id/left"
    android:layout_width="150dip"
    android:layout_height="fill_parent"
    android:background="@color/red" >
</RelativeLayout>

<LinearLayout
    android:id="@+id/right"
    android:layout_width="100dip"
    android:layout_height="fill_parent"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="@color/green" >
</LinearLayout>

如果我不需要左侧的布局在某个点停止扩展,则此代码(来自@Lokesh)将起作用。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >

<LinearLayout
    android:id="@+id/left"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_toLeftOf="@+id/right"
    android:background="@color/red" >

</LinearLayout>

<LinearLayout
    android:id="@+id/right"
    android:layout_width="100dip"
    android:layout_height="fill_parent"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="@color/green" >
</LinearLayout>

很高兴知道是否有人认为这是不可能的,所以我可以采取务实的方式或改变我的布局方法。

谢谢!

4

1 回答 1

3

这对我有用。我已将正确的布局设置为 100dip,根据您的需要进行更改。

<?xml version="1.0" encoding="utf-8" ?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/left"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_toLeftOf="@+id/right"
        android:background="@color/red" >

    </LinearLayout>

    <LinearLayout
        android:id="@+id/right"
        android:layout_width="100dip"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="@color/green" >
    </LinearLayout>

</RelativeLayout>

编辑 1:我使用背景颜色只是为了清楚地显示布局。完全没有必要。:)

编辑 2:如果您想要一种方法将左侧布局扩展到一个限制,那么试试这个 -

<?xml version="1.0" encoding="utf-8" ?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/left"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_toLeftOf="@+id/right">
        <LinearLayout 
                            android:id="@+id/inner"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"         
            android:background="@color/yellow">

            <TextView
                android:id="@+id/myTextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="This will expand only to a limit"
                android:maxWidth="300dip"
                android:textAppearance="?android:attr/textAppearanceLarge" 
                android:background="@color/red" />

        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/right"
        android:layout_width="100dip"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="@color/green" >
    </LinearLayout>

</RelativeLayout>

在这里,您需要将小部件放置在inner布局中,这就是它在不同屏幕中的样子。

3.1英寸HVGA 3.2英寸HVGA

5.2英寸QVGA 5.2英寸QVGA

使用的颜色:红色(#FFFF00)、黄色(#FFFFFF00)、绿色(#FF00FF00)。

于 2012-11-03T09:12:44.460 回答