2014-02-26 30 views
0

我的活动由14个按钮组成,我尝试在屏幕上均匀分布。等距传播按钮

我也希望它们的尺寸完全相同,尽管其中一个显示3位数字(其余的有1位数字或2),另一个有一个图像。

这两个按钮使所有的问题,因为他们不想保持相同的大小,即使我把它们的重量设置为1,我不使用wrap_content

中间行比其他行略低,我不得不使用第3行的“隐形按钮”,所以它看起来不错,但我知道这是蹩脚的解决方案。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/LinearLayout1" 
style="@style/AppBaseTheme" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_gravity="" 
android:animateLayoutChanges="true" 
android:background="#f000" 
android:baselineAligned="false" 
android:gravity="top" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

    <LinearLayout 
    android:id="@+id/LinearLayout01" 
    style="@style/lineralLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:gravity="top" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/Button0" 
     style="@style/buttonText" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:background="@drawable/btn_background_green" 
     android:focusable="false" 
     android:onClick="load0" 
     android:text="@string/btn_0" /> 

    <Button 
     android:id="@+id/Button2" 
     style="@style/buttonText" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:focusable="false" 
     android:onClick="load2" 
     android:text="@string/btn_2" /> 

    <Button 
     android:id="@+id/Button8" 
     style="@style/buttonText" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:focusable="false" 
     android:onClick="load8" 
     android:text="@string/btn_8" /> 

    <Button 
     android:id="@+id/Button40" 
     style="@style/buttonText" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:focusable="false" 
     android:onClick="load40" 
     android:text="@string/btn_40" 
     android:textAppearance="@style/buttonText" /> 

    <Button 
     android:id="@+id/ButtonQuestion" 
     style="@style/buttonText" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:focusable="false" 
     android:onClick="loadDontKnow" 
     android:text="@string/btn_question" 
     android:textAppearance="@style/buttonText" /> 

</LinearLayout> 

<LinearLayout 
    android:id="@+id/LinearLayout2" 
    style="@style/lineralLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:gravity="top" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/Button1_2" 
     style="@style/buttonText" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:focusable="false" 
     android:onClick="load1_2" 
     android:text="@string/btn1_2" /> 

    <Button 
     android:id="@+id/Button3" 
     style="@style/buttonText" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:focusable="false" 
     android:onClick="load3" 
     android:text="@string/btn_3" /> 

    <Button 
     android:id="@+id/Button13" 
     style="@style/buttonText" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:focusable="false" 
     android:onClick="load13" 
     android:text="@string/btn_13" /> 

    <Button 
     android:id="@+id/Button100" 
     style="@style/buttonText" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:focusable="false" 
     android:onClick="load100" 
     android:paddingLeft="2dp" 
     android:paddingRight="2dp" 
     android:text="@string/btn_100" /> 

    <ImageButton 
     android:id="@+id/ButtonCoffee" 
     style="@style/buttonText" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="5dp" 
     android:layout_weight="1" 
     android:adjustViewBounds="false" 
     android:contentDescription="@string/coffee_descr" 
     android:cropToPadding="true" 
     android:focusable="false" 
     android:paddingLeft="2dp" 
     android:paddingRight="2dp" 
     android:scaleType="center" 
     android:src="@drawable/coffeepng" 
     android:text="@string/btn_13" 
     android:visibility="visible" /> 

</LinearLayout> 

<LinearLayout 
    android:id="@+id/LinearLayout3" 
    style="@style/lineralLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:gravity="top" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/Button1" 
     style="@style/buttonText" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:focusable="false" 
     android:onClick="load1" 
     android:text="@string/btn_1" /> 

    <Button 
     android:id="@+id/Button5" 
     style="@style/buttonText" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:focusable="false" 
     android:onClick="load5" 
     android:text="@string/btn_5" 
     android:typeface="sans" /> 

    <Button 
     android:id="@+id/Button20" 
     style="@style/buttonText" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:focusable="false" 
     android:onClick="load20" 
     android:text="@string/btn_20" /> 

    <Button 
     android:id="@+id/ButtonInfinity" 
     style="@style/buttonText" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:focusable="false" 
     android:onClick="loadInfinity" 
     android:text="@string/btn_infinity" /> 

    <Button 
     android:id="@+id/button4" 
     style="@style/Invisiblebutton" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@string/btn_0" 
     android:visibility="invisible" /> 

    </LinearLayout> 

</LinearLayout> 

,并为那些按钮的样式:

<style name="buttonText" parent="@android:style/TextAppearance"> 
    <item name="android:textColor">#FFFFFF</item> 
    <item name="android:textSize">35sp</item> 
    <item name="android:typeface">sans</item> 
    <item name="android:textStyle">bold</item> 
    <item name="android:background">@drawable/btn_background_green</item> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_marginTop"> 5dp </item> 
    <item name="android:layout_marginBottom">5dp </item> 
</style> 

    <style name="Invisiblebutton" parent="@android:style/TextAppearance"> 
    <item name="android:textColor">#000000</item> 
    <item name="android:textSize">35sp</item> 
    <item name="android:typeface">sans</item> 
    <item name="android:textStyle">bold</item> 
    <item name="android:background">@drawable/invisible_btn</item> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_marginTop"> 5dp </item> 
    <item name="android:layout_marginBottom">5dp </item> 
    </style> 
+0

如果您水平展开的按钮,设置宽度为0。如果你是垂直传播的按钮,设置高度为0设置别的食堂与Android的方式分配观点 – Spidy

回答

1

所以,我觉得你几乎有它。如果对父布局使用属性权重,则可以精确定位元素。例如:

<LinearLayout 
android:id="@+id/LinearLayout01" 
style="@style/lineralLayout" 
android:layout_width="fill_parent" 
android:layout_height="match_parent" 
android:layout_weight="1" 
android:gravity="top" 
android:orientation="vertical" 
android:weightSum="5" > 

<Button 
    android:id="@+id/Button0" 
    style="@style/buttonText" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:background="@drawable/btn_background_green" 
    android:focusable="false" 
    android:onClick="load0" 
    android:text="@string/btn_0" /> 

<Button 
    android:id="@+id/Button2" 
    style="@style/buttonText" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:focusable="false" 
    android:onClick="load2" 
    android:text="@string/btn_2" /> 

<Button 
    android:id="@+id/Button8" 
    style="@style/buttonText" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:focusable="false" 
    android:onClick="load8" 
    android:text="@string/btn_8" /> 

<Button 
    android:id="@+id/Button40" 
    style="@style/buttonText" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:focusable="false" 
    android:onClick="load40" 
    android:text="@string/btn_40" 
    android:textAppearance="@style/buttonText" /> 

<Button 
    android:id="@+id/ButtonQuestion" 
    style="@style/buttonText" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:focusable="false" 
    android:onClick="loadDontKnow" 
    android:text="@string/btn_question" 
    android:textAppearance="@style/buttonText" /> 

+0

weightSum是自动计算的,只能在不能推断总体重量时使用 – Spidy