在布局上水平传播按钮

Fel*_*das 1 android android-widget android-layout

这是我在Stackoverflow上的第一篇文章.在我提出问题之前,我只想说这是一个很好的信息资源,我发现社区非常有帮助.我希望能够与其他人分享我的Android开发知识.

我已经为Android开发了6个月了,虽然我学到了很多东西,但在布局/设计方面我仍然非常努力.

我有一个包含相对布局的layout.xml文件.在这个布局中,我有三个按钮.我希望这三个按钮具有一定的宽度尺寸,根据设备的屏幕尺寸/密度增大或缩小.

这是xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout1123123213"
    android:layout_width="fill_parent"
    android:layout_height="@dimen/actionbar_height"
    android:orientation="horizontal">

    <Button
        android:id="@+id/btnLogin"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:background="@drawable/button"
        android:drawableLeft="@drawable/balloon_overlay_close"
        android:gravity="center"
        android:text="Earned" />

    <Button
        android:id="@+id/btnLogin2"
        android:layout_width="113dp"
        android:layout_height="50dp"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/btnLogin"
        android:background="@drawable/button"
        android:drawableLeft="@drawable/balloon_overlay_close"
        android:gravity="center"
        android:text="In Progress" />


     <Button
        android:id="@+id/btnLogin3"
        android:layout_width="107dp"
        android:layout_height="50dp"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/btnLogin2"
        android:background="@drawable/button"
        android:drawableLeft="@drawable/balloon_overlay_close"
        android:gravity="center"
        android:text="Done" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

考虑到每个按钮中有不同的文字大小,我对宽度值进行了硬编码...所以这显然也应该影响宽度......

我的问题是......是否有任何明智的方法来实现这一目标?也许以编程方式,当我知道当前设备的屏幕尺寸?

感谢大家!费利佩

================================================== ==更新的部分

嘿伙计们,感谢你们的帮助.

我根据建议添加了LinearLayout和重量,但我仍然没有得到我想要的东西.它几乎就在那里,但并不完全.

我的新xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="@dimen/actionbar_height"
android:orientation="horizontal"  
android:gravity="center" android:weightSum="1">

    <Button
        android:id="@+id/btnLogin"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@drawable/button"
        android:drawableLeft="@drawable/balloon_overlay_close"
        android:gravity="center"
        android:text="@string/bottonbar_earned" 
        android:layout_weight=".10"/>

    <Button
        android:id="@+id/btnLogin2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".10"
        android:background="@drawable/button"
        android:drawableLeft="@drawable/balloon_overlay_close"
        android:gravity="center"
        android:text="@string/bottonbar_inprogress" />


     <Button
        android:id="@+id/btnLogin3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@drawable/button"
        android:drawableLeft="@drawable/balloon_overlay_close"
        android:gravity="center" android:text="@string/bottonbar_redeemed"
        android:layout_weight=".90"/>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这是结果链接 你能看到右侧的结尾吗?虽然我在第三个按钮上设置了0.90的重量,但我不认为重量是按照它应该分配的.你们有什么感想?

Ale*_*s G 6

你可以做的是使用android:layout_weight按钮上的属性,但你需要将它们放入一个LinearLayout.如果你需要RelativeLayout,那么你可以把LinearLayout它放在里面.

<LinearLayout
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:weightSum="1.0" >
    <Button
        android:text="left" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight=".30" /> 

    <Button
        android:text="center" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight=".40" />

    <Button
        android:text="right" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight=".30" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)