【问题标题】:Android Button Height in Layout not filling the parent布局中的Android按钮高度未填充父级
【发布时间】:2013-12-05 10:32:18
【问题描述】:

我已经创建了这个布局,但我不知道为什么Button 的高度没有填满布局高度

<?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="wrap_content"
              android:orientation="vertical"
    >

  <View
      android:layout_width="match_parent"
      android:layout_height="1dp"
      android:background="@color/pf_sm_dividor_light"
      />

  <RelativeLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:layout_toLeftOf="@+id/button">

      <ImageView
          android:id="@+id/li_icon"
          android:layout_width="24dp"
          android:layout_height="24dp"
          android:layout_centerVertical="true"
          android:src="@drawable/pf_ic_main"
          android:layout_alignParentLeft="true"
          android:scaleType="centerInside"
          android:layout_marginLeft="9dp"
          android:contentDescription="@string/pf_app_name" />

      <TextView
          style="@style/pf.TextView.sm_title"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_centerVertical="true"
          android:gravity="center_vertical|left"
          android:layout_marginLeft="2dp"
          android:text="Text Here"
          android:layout_toRightOf="@id/li_icon"
          android:layout_alignRight="@+id/pf_sm_ktext" />

      <ir.system.views.KText
          style="@style/pf.TextView.sm_title"
          android:layout_width="wrap_content"
          android:textStyle="normal"
          android:layout_height="wrap_content"
          android:gravity="center_vertical|right"
          android:text="1,500"
          android:textSize="22sp"
          android:layout_centerVertical="true"
          android:layout_alignParentRight="true"
          android:id="@+id/pf_sm_ktext" />

    </RelativeLayout>
<!-- Here is the Button -->
    <Button
        android:layout_alignParentRight="true"
        android:layout_width="60dp"
        android:layout_margin="0dp"
        android:text="+"
        android:layout_height="match_parent"
        android:background="@drawable/pf_btn"
        android:id="@+id/button"
        />
  </RelativeLayout>

  <View
      android:layout_width="match_parent"
      android:layout_height="1dp"
      android:background="@color/pf_sm_dividor_dark"
      />
</LinearLayout>

但结果是这样的:

模拟器安卓4.0结果:

【问题讨论】:

    标签: android android-layout android-button


    【解决方案1】:

    您的问题的基本概念..

    <LinearLayout 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >
    
    
    
            <ImageButton 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end"
                android:src="@drawable/ic_launcher"
                />
    
    
            </LinearLayout>
    

    使用相对布局试试这个:

    <RelativeLayout
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          >
    
          <ImageView
              android:id="@+id/li_icon"
              android:layout_width="24dp"
              android:layout_height="24dp"
              android:layout_centerVertical="true"
              android:layout_alignParentLeft="true"
              android:scaleType="centerInside"
              android:layout_marginLeft="9dp" 
              android:src="@drawable/ic_launcher"
              />
    
          <TextView
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:layout_centerVertical="true"
              android:gravity="center_vertical|left"
              android:layout_marginLeft="2dp"
              android:text="Text Here"
              android:layout_toRightOf="@id/li_icon"
              android:layout_alignRight="@+id/pf_sm_ktext" />
    
    
    
    
    <!-- Here is the Button -->
        <Button
            android:layout_alignParentRight="true"
            android:layout_width="60dp"
            android:layout_margin="0dp"
            android:text="+"
            android:layout_height="wrap_content"
            android:id="@+id/button"
            android:layout_toLeftOf="@+id/rl"
            />
      </RelativeLayout>
    

    使用线性布局试试这个

     <?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="wrap_content"
                      android:orientation="horizontal"
                      android:background="@color/red"
            >
    
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_launcher"
                android:layout_gravity="start"
                />
    
            <TextView android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="Android Hacker"
                android:layout_weight="1"
                android:textSize="15sp"
                />
    
            <LinearLayout 
                android:layout_width="1dp"
                android:layout_height="fill_parent"
                android:background="@color/black"
    
                ></LinearLayout>
    
            <Button 
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:text="okay"
                android:layout_gravity="end"
                android:background="@color/brown"
                />
    
    
        </LinearLayout>
    

    【讨论】:

    • 但我想用RelativeLayout做它
    • 使用 LinearLayout 有什么问题?
    • 在此之后我将添加一些相对视图。使用这种相对布局创建它非常重要。
    • 在线性布局中使用权重可以解决您的问题。如果您使用的是列表视图,请告诉我?
    • 不,它不是列表视图,它只是我的主要布局的一个项目。这对于使用RelativeLayout 非常重要,这种相对布局有什么问题?它很可靠,不是吗?这可能是一个错误吗?
    【解决方案2】:
    <?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="wrap_content"
        android:orientation="vertical" >
    
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@android:color/darker_gray" />
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_toLeftOf="@+id/button"
                android:paddingBottom="10dp"
                android:paddingTop="10dp" >
    
                <ImageView
                    android:id="@+id/li_icon"
                    android:layout_width="24dp"
                    android:layout_height="24dp"
                    android:layout_alignParentLeft="true"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="9dp"
                    android:scaleType="centerInside" />
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignRight="@+id/pf_sm_ktext"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="2dp"
                    android:layout_toRightOf="@id/li_icon"
                    android:gravity="center_vertical|left"
                    android:text="Text Here" />
    
                <TextView
                    android:id="@+id/pf_sm_ktext"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:gravity="center_vertical|right"
                    android:text="1,500"
                    android:textSize="22sp"
                    android:textStyle="normal" />
            </RelativeLayout>
            <!-- Here is the Button -->
    
            <Button
                android:id="@+id/button"
                android:layout_width="60dp"
                android:layout_height="match_parent"
                android:layout_alignParentRight="true"
                android:layout_margin="0dp"
                android:background="@android:color/holo_blue_light"
                android:text="+" />
        </RelativeLayout>
    
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@android:color/darker_gray" />
    
    </LinearLayout>
    

    【讨论】:

    • 这是我在编辑器中所做的,它显示了您想要的方式,请尝试一下它对您的看法
    • 我在编辑器中的代码工作正常!但在我的设备中我是这样解释的,让我在模拟器 4.0 上检查一下
    • 我测试过,结果是一样的。
    • 它不能在设备上运行?我只是将它推到运行 4.2 的手机上,它会向我显示你的预期结果。
    • 试试这个,android:layout_height="wrap_content" 把这个改成 android:layout_height="match_parent" 第二个相对布局看看结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2016-02-11
    相关资源
    最近更新 更多