固定宽度LinearLayout

时间:2017-10-31 11:25:13

标签: android android-linearlayout fixed

我正在尝试并排放置两个线性布局并将内容放入其中。

我希望两个线性布局并排,但左边的布局应该占据屏幕的3/4左右,而右边的布局应该占据其余部分。

这是我的代码:https://gitlab.com/snippets/1682040

但是两个线性布局总是根据内容改变宽度和高度。

如何在固定宽度和高度的情况下并排放置两个线性布局?

欢迎使用RelativeLayout的更好解决方案。

结果如下:

enter image description here

8 个答案:

答案 0 :(得分:3)

使用layout_weightLinearLayout属性的android:weightSum属性作为父布局。

做这样的事

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="15dp"
    android:weightSum="1">
      <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight=".75" // For First layout to 3/4
        android:background="@color/colorPrimary"
        android:gravity="left|center"
        android:orientation="vertical">
            //First Layout content Here
        </LinearLayout>

        <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight=".25" // For Second layout to rest of screen
        android:background="@color/colorAccent"
        android:gravity="center"
        android:orientation="vertical">
               //Second Layout Content Here
           </LinearLayout>
</LinearLayout>

答案 1 :(得分:2)

我知道您要求使用LinearLayout的解决方案,但我建议您使用ConstraintLayout解决此问题。如果没有嵌套视图,您将获得令人难以置信的性能提升。

在此示例中,我添加了屏幕左侧的vertical guideline at 75%。我只需删除嵌套的LinearLayouts并将约束添加到您的视图中!

尝试一下!

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>

<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="0dp"
    android:layout_height="628dp"
    android:layout_marginBottom="8dp"
    android:layout_marginTop="8dp"
    android:background="@color/colorPrimary"
    android:gravity="left|center"
    android:orientation="vertical"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/guideline4"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <TextView
        android:id="@+id/repository_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="AAAAA"
        android:textColor="@color/blue"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/repository_description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxLines="2"
        android:text="AAAAA"
        android:textColor="@color/gray"
        android:textSize="15dp" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_menu_camera" />

        <TextView
            android:id="@+id/repository_fork_number"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="123"
            android:textColor="@color/orange"
            android:textSize="20dp" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:src="@drawable/ic_menu_camera" />

        <TextView
            android:id="@+id/repository_star_number"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="123"
            android:textColor="@color/orange"
            android:textSize="20dp" />

    </LinearLayout>

</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayout3"
    android:layout_width="0dp"
    android:layout_height="628dp"
    android:layout_marginBottom="8dp"
    android:layout_marginTop="8dp"
    android:background="@color/colorAccent"
    android:gravity="center"
    android:orientation="vertical"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="@+id/guideline4"
    app:layout_constraintTop_toTopOf="parent">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/user_image"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true" />

    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="AAAAA"
        android:textColor="@color/blue" />

    <TextView
        android:id="@+id/first_last_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Mock Name"
        android:textColor="@color/lightGray" />

</LinearLayout>

<android.support.constraint.Guideline
    android:id="@+id/guideline4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.75" />

答案 2 :(得分:1)

试试这个给你的第一个LinearLayout android:layout_weight=".75" ,这样它可以在屏幕上占用3/4的空间 而不是将 android:layout_weight="0.25" 分配给您的第二个LinearLayout,以便剩余空间

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="15dp"
    android:weightSum="1">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.75"
        android:background="@color/colorPrimary"
        android:orientation="vertical">

        <TextView
            android:id="@+id/repository_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="AAAAA"
            android:textColor="@color/colorBlue"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/repository_description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="2"
            android:text="AAAAA"
            android:textColor="@color/colorGreen"
            android:textSize="15dp" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_menu_camera" />

            <TextView
                android:id="@+id/repository_fork_number"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="123"
                android:textColor="@color/colorPrimary"
                android:textSize="20dp" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="15dp"
                android:src="@drawable/ic_menu_camera" />

            <TextView
                android:id="@+id/repository_star_number"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="123"
                android:textColor="@color/colorPrimary"
                android:textSize="20dp" />

        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.25"
        android:background="@color/colorAccent"
        android:gravity="center"
        android:orientation="vertical">

        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/user_image"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true" />

        <TextView
            android:id="@+id/username"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="AAAAA"
            android:textColor="@color/colorBlue" />

        <TextView
            android:id="@+id/first_last_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Mock Name"
            android:textColor="@color/colorRed" />

    </LinearLayout>

</LinearLayout>

答案 3 :(得分:0)

似乎两个权重都设置为&#34; 1&#34;。你试过&#34; .5&#34;?

   <LinearLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/colorPrimary"
    android:layout_weight="0.50"
    android:gravity="left|center">

答案 4 :(得分:0)

试试这个我增加了重量

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="15dp"
    android:weightSum="1">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight=".75"
        android:background="@color/colorPrimary"
        android:gravity="left|center"
        android:orientation="vertical">

        <TextView
            android:id="@+id/repository_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="AAAAA"
            android:textColor="@color/blue"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/repository_description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="2"
            android:text="AAAAA"
            android:textColor="@color/gray"
            android:textSize="15dp" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_menu_camera" />

            <TextView
                android:id="@+id/repository_fork_number"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="123"
                android:textColor="@color/orange"
                android:textSize="20dp" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="15dp"
                android:src="@drawable/ic_menu_camera" />

            <TextView
                android:id="@+id/repository_star_number"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="123"
                android:textColor="@color/orange"
                android:textSize="20dp" />

        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight=".25"
        android:background="@color/colorAccent"
        android:gravity="center"
        android:orientation="vertical">

        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/user_image"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true" />

        <TextView
            android:id="@+id/username"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="AAAAA"
            android:textColor="@color/blue" />

        <TextView
            android:id="@+id/first_last_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Mock Name"
            android:textColor="@color/lightGray" />

    </LinearLayout>

</LinearLayout>

答案 5 :(得分:0)

首先从父布局中删除weightSum属性。

如果你想让你的第一个布局为3/4,那么你应该为另一个布局加重0.75和0.25(1/4):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="15dp">

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/colorPrimary"
    android:layout_weight=".75"
    android:layout_gravity="left"
    android:gravity="left|center">

    <TextView
        android:id="@+id/repository_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="AAAAA"
        android:textColor="@color/blue"
        android:textSize="20dp"/>

    <TextView
        android:id="@+id/repository_description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxLines="2"
        android:ellipsize="end"
        android:text="AAAAA"
        android:textColor="@color/gray"
        android:textSize="15dp"/>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_menu_camera"/>

        <TextView
            android:id="@+id/repository_fork_number"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="123"
            android:textColor="@color/orange"
            android:textSize="20dp"/>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_menu_camera"
            android:layout_marginLeft="15dp"/>

        <TextView
            android:id="@+id/repository_star_number"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="123"
            android:textColor="@color/orange"
            android:textSize="20dp"/>

    </LinearLayout>

</LinearLayout>

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/colorAccent"
    android:layout_weight=".25"
    android:gravity="center">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/user_image"
        android:layout_width="40dp"
        android:layout_height="40dp" />

    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="AAAAA"
        android:textColor="@color/blue"/>

    <TextView
        android:id="@+id/first_last_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Mock Name"
        android:textColor="@color/lightGray"/>

</LinearLayout>

答案 6 :(得分:0)

试试这个:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

            <LinearLayout

                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight=".75"
                android:orientation="vertical"
                android:visibility="visible">

                <TextView

                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"

                    android:textColor="#000"
                    android:textSize="16dp" />

                <TextView

                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/shape_txt"
                    android:gravity="center"
                  />

            </LinearLayout>

            <LinearLayout

                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight=".25"
                android:orientation="vertical"
                android:visibility="visible">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"

                    android:textColor="#000"
                    android:textSize="16dp" />

                <TextView

                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/shape_txt"
                    android:gravity="center"
                    />

            </LinearLayout>
        </LinearLayout>

答案 7 :(得分:0)

在父布局中将权重总和更改为4,并为子线性布局添加权重3,这样它可以占用3/4空间和1到子线性布局,以便占用剩余空间。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="15dp"
    android:weightSum="4">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:background="@color/colorPrimary"
        android:gravity="left|center"
        android:orientation="vertical">

        //Your contents

    </LinearLayout>


    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@color/colorAccent"
        android:gravity="center"
        android:orientation="vertical">

        //Your contents

    </LinearLayout>

</LinearLayout>