2017-09-21 137 views
-1

的底部我知道这个问题被问了很多,因为我尝试了很多张贴在这里的例子,但我不能让它工作,这就是我:保持在的LinearLayout屏幕

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:cardview="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    android:background="#3F51B5" 
    android:padding="5dp" 
    android:paddingBottom="500dp"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:id="@+id/linearLayout2" 
     android:gravity="bottom" 
     android:layout_weight="1"> 
     <Button 
      android:text="Button" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/btnTarjeta" 
      android:background="@color/my_purple" 
      android:layout_marginBottom="20dp" 
      android:layout_marginTop="20dp" /> 
     <TextView 
      android:text="Text" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textColor="@color/my_white" 
      android:id="@+id/textView1" 
      android:fontFamily="sans-serif-medium" 
      android:layout_marginBottom="10dp" /> 
     <RadioGroup 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/radioGp" 
      android:minWidth="25px" 
      android:minHeight="25px" 
      android:layout_marginBottom="10dp" /> 
    </LinearLayout> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/linearLayout3" 
     android:layout_gravity="bottom"> 
     <Button 
      android:text="Button" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/button2" /> 
     <Button 
      android:text="Button" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/button1" /> 
    </LinearLayout> 
</LinearLayout> 

可能是一个“问题”的事情之一是我动态填充收音机组内的单选按钮,所以有时可以是4个单选按钮,而在另一时刻可以是1,我不会知道这是否会影响我正在尝试做的任何事情。

而我想要做的是保持第一个线性层在顶部,第二个线性层在按钮。我做错了什么?

回答

0

请下次再提供一下你最想要的东西。我不确定,但也许你想要这个。你的根更改LinearLayoutheightmatch_parent,并删除第一LinearLayoutandroid:gravity="bottom"

Screenshot of Android Studio Preview

0

首先要做的事情,你必须把高度,以你的主容器如match_parent与你展开视图为设备屏幕的高度,接下来我不能得到的逻辑,为什么你的第一个孩子 - LinearLayout中有0dp作为android:layout_height,但你应该把它放到android:layout_height="wrap_content",最后要做的就是把android:layout_gravity="bottom"放到第二个孩子LinearLayout。

另外我建议阅读android:layout_gravity =“”和android:gravity =“”这两个LinearLayout属性的区别。

更新:

  1. 删除安卓重力=从中 让孩子们去中心主容器 “CENTER_HORIZONTAL”。

  2. 从 删除android:gravity =“bottom”android:layout_weight =“1”第一个孩子为什么要把第一个线性布局转到 底部?

下面是一些干净的代码:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:cardview="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#3F51B5" 
    android:padding="20dp"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/linearLayout2"> 
     <Button 
      android:text="Button" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/btnTarjeta" 
      android:background="@color/my_purple" 
      android:layout_marginBottom="20dp" 
      android:layout_marginTop="20dp" /> 
     <TextView 
      android:text="Text" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textColor="@color/my_white" 
      android:id="@+id/textView1" 
      android:fontFamily="sans-serif-medium" 
      android:layout_marginBottom="10dp" /> 
     <RadioGroup 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/radioGp" 
      android:minWidth="25px" 
      android:minHeight="25px" 
      android:layout_marginBottom="10dp" /> 
    </LinearLayout> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/linearLayout3" 
     android:layout_gravity="bottom"> 
     <Button 
      android:text="Button" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/button2" /> 
     <Button 
      android:text="Button" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/button1" /> 
    </LinearLayout> 
</LinearLayout> 
0

因为LinearLayoutgravity并不总是按预期工作,我建议你做内部LinearLayout s到有android:layout_height="wrap_content"并插入一个空View,将垂直拉伸并填充顶部和底部内容之间的所有可用空间。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:cardview="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_content" 
    ... > 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/linearLayout2"> 
     <Button ... /> 
     <TextView ... /> 
     <RadioGroup .../> 
    </LinearLayout> 

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

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/linearLayout3"> 
     <Button ... /> 
     <Button ... /> 
    </LinearLayout> 
</LinearLayout> 
0

可以使用layout_weight。 80和20,它将在所有屏幕上工作

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:cardview="http://schemas.android.com/apk/res-auto" 
android:layout_width="fill_parent" 
android:layout_height="match_parent" 
android:background="#3F51B5" 
android:gravity="center_horizontal" 
android:orientation="vertical" 
android:padding="5dp" 
android:paddingBottom="500dp" 
android:weightSum="100"> 

<LinearLayout 
    android:id="@+id/linearLayout2" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="80" 
    android:gravity="bottom" 
    android:minHeight="25px" 
    android:minWidth="25px" 
    android:orientation="vertical"> 

    <Button 
     android:id="@+id/btnTarjeta" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="20dp" 
     android:layout_marginTop="20dp" 
     android:background="@color/my_purple" 
     android:text="Button" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="10dp" 
     android:fontFamily="sans-serif-medium" 
     android:text="Text" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="@color/my_white" /> 

    <RadioGroup 
     android:id="@+id/radioGp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="10dp" 
     android:minHeight="25px" 
     android:minWidth="25px" /> 
</LinearLayout> 



    <LinearLayout 
    android:id="@+id/linearLayout3" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_gravity="bottom" 
    android:layout_weight="20" 
    android:orientation="vertical"> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Button" /> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Button" /> 
</LinearLayout> 
</LinearLayout>