使用LinearLayout按钮超出范围

时间:2016-11-27 14:21:12

标签: android xml android-recyclerview android-linearlayout

我尝试使用LinearLayout将3个按钮放在一行中。 左侧按钮(固定尺寸)应与屏幕左侧部分对齐,右侧按钮(固定尺寸)对齐。中间按钮的大小应该是可变的,应该填补剩余的空间。下面所述代码的结果是,右键按钮超出界限且不可见。任何人都可以帮我解决这个问题吗?

<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:clickable="true"
  android:focusable="true"
  android:focusableInTouchMode="true"
  android:orientation="horizontal"
  android:weightSum="1.0">

  <Button
    android:id="@id/LeftButton"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:elevation="9dp"
    android:focusable="true"
    android:paddingBottom="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="10dp"
    android:layout_weight="0.2"/>

  <Button
    android:id="@id/MiddleButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="15dp"
    android:paddingTop="18dp"
    android:layout_weight="0.6"/>

  <Button
    android:id="@id/RightButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="0.2"/>

</LinearLayout>

3 个答案:

答案 0 :(得分:0)

您应该将中间按钮宽度更改为0dp,这将缩放它以适合缺少的部分。

您可以将布局更改为:

<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:clickable="true"
  android:focusable="true"
  android:focusableInTouchMode="true"
  android:orientation="horizontal">

  <Button
    android:id="@id/LeftButton"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:elevation="9dp"
    android:focusable="true"
    android:paddingBottom="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="10dp"/>

  <Button
    android:id="@id/MiddleButton"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:paddingLeft="15dp"
    android:paddingTop="18dp"
    android:layout_weight="1"/>

  <Button
    android:id="@id/RightButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

</LinearLayout>

答案 1 :(得分:0)

使用此功能,它可以满足您的需求。

<LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:clickable="true"
 android:focusable="true"
 android:focusableInTouchMode="true"
 android:orientation="horizontal"
 android:weightSum="1.0">

   <Button
   android:id="@+id/LeftButton"
   android:layout_width="0dp"
   android:layout_height="50dp"
   android:elevation="9dp"
   android:focusable="true"
   android:paddingBottom="10dp"
   android:paddingLeft="10dp"
   android:paddingRight="10dp"
   android:paddingTop="10dp"
   android:layout_weight="0.2"/>

 <Button
   android:id="@+id/MiddleButton"
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   android:paddingLeft="15dp"
   android:paddingTop="18dp"
   android:layout_weight="0.6"/>

   <Button
    android:id="@+id/RightButton"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="0.2"/>

</LinearLayout>

答案 2 :(得分:0)

在水平设置layout_weight和LinearLayout时,应将所有按钮宽度更改为0dp。

enter image description here