【问题标题】:Linear Layout layout_gravity on View is not working视图上的线性布局 layout_gravity 不起作用
【发布时间】:2014-05-27 09:59:49
【问题描述】:

我正在构建一个需要进行布局的应用程序。通常我使用相对布局和自定义视图来完成我的工作,但是这一次,我想使用线性布局,所以我在 XML 下制作了这个。我的目标是在父级内部创建一个子级线性布局,并将子级的重力设置为“底部”,这将保持我的两个底部,一个应该右对齐,一个应该左对齐。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:gravity="bottom"       
    >       
   <Button            
        android:gravity="left"
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Previous" />
   <Button            
        android:id="@+id/button3"
        android:layout_gravity="right"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Next"/>
</LinearLayout>

孩子坐在底部,但是按钮的两个视图没有正确对齐。是我做错了什么,还是这些东西都不能通过这个Layout实现?

【问题讨论】:

    标签: android android-layout android-linearlayout gravity layout-gravity


    【解决方案1】:

    使用的纯线性布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:orientation="vertical"
        android:weightSum="1">
    
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"></LinearLayout>
    
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:weightSum="2">
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="Previous"
                android:id="@+id/button"
                android:layout_weight="1" />
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="Next"
                android:id="@+id/button2"
                android:layout_weight="1" />
        </LinearLayout>
    

    为了解释你需要最大限度地使用weightSum。另一个不包含任何内容的布局也可以包含您的其他小部件,以防万一您需要添加一些 TextViews 等。这也适用于其他布局将被强制放置在整个父 LinearLayout 的底部。

    如果您想在中间的这两个按钮之间留出一个空间,您可以随时使用填充。 ;)

    【讨论】:

      【解决方案2】:

      试试这个布局..希望这对你有帮助

      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:orientation="vertical"
          android:paddingLeft="5dp"
          android:paddingRight="5dp" >
      
          <LinearLayout
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_alignParentBottom="true"
              android:orientation="horizontal" >
      
              <Button
                  android:id="@+id/button2"
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_weight="1"
                  android:text="Previous" />
      
              <Button
                  android:id="@+id/button3"
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_weight="1"
                  android:text="Next" />
          </LinearLayout>
      
      </RelativeLayout>
      

      【讨论】:

      • 不必使用相对布局,只有 layout_weight 可以解决问题。谢谢你提醒我!!!谢谢
      【解决方案3】:
      you can do this using Relative layout easily
      
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:paddingLeft="5dp"
      android:paddingRight="5dp"
      android:orientation="vertical" >
      
      <LinearLayout
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:orientation="horizontal"
          android:gravity="bottom"       
          >  
            <RelativeLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          >      
         <Button            
              **android:layout_alignParentLeft=true**
              android:id="@+id/button2"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Previous" />
         <Button            
              android:id="@+id/button3"
              **android:layout_alignParentRight=true**
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Next"/>
      </RelativeLayout>
      </LinearLayout>
      </LinearLayout>
      

      【讨论】:

        【解决方案4】:

        试试下面的代码。

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:orientation="vertical"
        android:gravity="bottom" >
        
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="bottom"       
            >       
           <Button            
                android:gravity="left"
                android:id="@+id/button2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Previous" />
           <Button            
                android:id="@+id/button3"
                android:layout_gravity="right"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Next"/>
        </LinearLayout>
        

        【讨论】:

        • 这个可以,但请注意:添加gravity="bottom" 后,您会使整个父布局变得无用,因为如果您需要在这部分添加另一个小部件,它将是也放在底部。在创建布局时,请始终确保它不会限制设计。 :)
        【解决方案5】:
        // Try this way,hope this will help you to solve your problem...
        
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:gravity="bottom"
            android:padding="5dp">
        
        
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
        
                <Button
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button1"/>
                <View
                    android:layout_width="0dp"
                    android:layout_height="1dp"
                    android:layout_weight="1"/>
        
                <Button
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button2"/>
            </LinearLayout>
        </LinearLayout>
        

        【讨论】:

          猜你喜欢
          • 2016-01-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多