我有一个有两个按钮的相对布局。我正在尝试动态设置这两个的相对位置,以便在不同的屏幕尺寸上,它看起来相同。布局的位置根据屏幕尺寸正确设置,但按钮之间的间距没有得到。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/buttonLine"
android:layout_above="@+id/separator">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:background="@drawable/skip"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_marginLeft="60dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonClr"
android:background="@drawable/clear"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_marginRight="60dp"/>
</RelativeLayout>
在我的java类中,我有一个动态部分的方法。我在那里使用这段代码进行按钮相对布局。
button_line.getLayoutParams().height = getHorizontalRatio(40); //button_line is RelativeLayout
skip.setPadding(getHorizontalRatio(40), 0, 0, 0); //skip and clear are the buttons
clear.setPadding(getHorizontalRatio(400), 0, 0, 0);
skip.getLayoutParams().width = getHorizontalRatio(75);
skip.getLayoutParams().height = getHorizontalRatio(25);
clear.getLayoutParams().width = getHorizontalRatio(75);
clear.getLayoutParams().height = getHorizontalRatio(25);
PS:我尝试更改比率并将布局更改为LinearLayout(我完全不理解)。请提出建议。
答案 0 :(得分:0)
Android自动负责根据屏幕尺寸定位元素。 我们使用dp(密度像素)作为单位来给出边距或填充,这反过来会将元素放置在设备的屏幕尺寸上。
点击此链接了解更多详情: http://developer.android.com/guide/practices/screens_support.html
因此,作为结论,您不必在运行时设置填充,您可以在布局xml中进行更改。
编辑尝试使用我的一个工作项目的片段!! ..
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="15dp"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="120dp"
android:text="CLEAR"
android:id="@+id/clearBtn"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="SEARCH"
android:id="@+id/searchBtn"/>
</LinearLayout>
希望这有效..
答案 1 :(得分:0)
性能不是很好,但工作正常:)
<LinearLayout
android:id="@+id/buttonLine"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/separator"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center" >
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/skip" />
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center" >
<Button
android:id="@+id/buttonClr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/clear" />
</LinearLayout>
</LinearLayout>
答案 2 :(得分:0)
试试这个......
有关详情:Layout Weight
<LinearLayout
android:id="@+id/layout_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/clear_btn"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/ic_action_clear"
android:padding="8dp" />
<Button
android:id="@+id/skip_btn"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/ic_action_skip"
android:padding="8dp" />
</LinearLayout>
答案 3 :(得分:0)
也许是这样的
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_marginLeft="60dp"
android:layout_marginRight="60dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:background="@drawable/skip" />
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonClr"
android:background="@drawable/clear />
</LinearLayout>
答案 4 :(得分:0)
这是你想要的吗?
<?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="match_parent"
android:orientation="horizontal"
android:padding="20dp"
android:weightSum="2">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_weight="1"
android:text="Button 1"/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:text="Button 2"/>
</LinearLayout>
答案 5 :(得分:0)
尝试使用TableLayout
并使用weight属性调整所需的间距。按钮之间的TextView
将用作间隔符。
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TableRow
android:id="@+id/tableRow1"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:weightSum = 11>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:layout_weight="5"
android:background="@drawable/skip"/>
<TextView
android:id="@+id/TextView04"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonClr"
android:layout_weight="5"
android:background="@drawable/clear"/>
</TableRow>
</TableLayout>
在RelativeLayout
。
希望它有所帮助。