Android让Button不进入屏幕中心

时间:2016-02-16 20:52:11

标签: android android-button centering

我想在屏幕中央设置一个按钮:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@color/black"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    android:paddingBottom="0dp"
    tools:context="com.vroy.trapper.MainMenuActivity">



    <Button
        android:id="@+id/playBtn"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/play_button_text"
        android:background="@drawable/round_button"
        />


</RelativeLayout>

(我将宽度/高度设置为0dp,因为我以编程方式更改它们。)

问题是在XML设计选项卡中,按钮看起来位于屏幕的中央(如果我将宽度/高度设置为50dp进行测试)当我实际运行程序时,按钮出现在左上角屏幕。

如何确保按钮实际位于屏幕中央?

以下是我设置按钮宽度/高度的代码:

 int screenWidth = getResources().getDisplayMetrics().widthPixels;
  //  int screenHeight = getResources().getDisplayMetrics().heightPixels;

    Button playBtn = (Button) findViewById(R.id.playBtn);
    int playBtnWidth = screenWidth/3;
    playBtn.setLayoutParams(new LayoutParams(playBtnWidth, playBtnWidth));

1 个答案:

答案 0 :(得分:2)

通过以编程方式设置LayoutParams,您将这些参数中的所有信息重置为默认值(高度和宽度除外,因为您在构造函数中设置了这些信息)。尝试将LayoutParams创建为变量,然后设置布局位置。

LayoutParams params = new LayoutParams(playBtnWidth, playBtnWidth);
params.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
playBtn.setLayoutParams(params);

Link to RelativeLayout