2016-11-27 34 views
1

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

<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> 

回答

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> 
+0

非常感谢快速反应,遗憾的是中间的按钮是现在已经完全“隐藏” ... – Florian

+0

也许屏幕不够大? 从按钮中删除填充并查看会发生什么 – fbwnd

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> 
0

您应该更改所有按钮的宽度,当你设置layout_weight和LinearLayout中上水平,以0dp。

enter image description here

+1

我已将相同的东西放在我的答案pouria中。 – CopsOnRoad

+0

当我们使用linearlayout vertical并设置layout_weight那么我们应该设置layout_height = 0dp。 –

+0

而当我们使用linearlayout horizo​​ntal并设置layout_weight那么我们应该设置layout_height = 0dp。 –