如何将Button放在LinearLayout的屏幕中心?

时间:2017-04-30 10:10:18

标签: android

这是使用LinearLayout的我的xml。工具栏和按钮都位于屏幕顶部。但是我希望Button在中央水平并且在中央垂直。按钮也浮动到左侧而不是中心。

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorVeryDark"
        android:elevation="4dp"

        android:theme="@style/ThemeOverlay.AppCompat.ActionBar" />

    <Button
        android:id="@+id/button2"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:text="text"
        android:textSize="22dp"
        android:layout_gravity="center_vertical"
        android:background="@color/colorPrimaryDark"
        />

</LinearLayout>

我该怎么做?

6 个答案:

答案 0 :(得分:1)

试试这个:使用SqlCommand cmd = new SqlCommand("Select i.Name,i.Quantity,i.Price, (Select Sum(Quantity*Price) from InventorytransTemp where TableName=(Select top 1 TableName from InventorytransTemp) and PrintFiscal=1)as Total ,j.MainGroupItemCode from InventorytransTemp i join InventoryMainGroupitems j on i.CategoryID=j.MainGroupItemID where TableName=(Select top 1 TableName from InventorytransTemp) and PrintFiscal=1 ", con); SqlDataReader read = cmd.ExecuteReader(); using (StreamWriter sw = new StreamWriter(@"C:\fiscal.txt")) { while (read.Read()) { sw.Write("S/"); string tempString = (read["Name"].ToString()); if (tempString.Length > 20) tempString = tempString.Substring(0, 20); else { tempString = tempString.PadRight(20); tempString = tempString.PadLeft(0); } sw.Write(tempString + "/"); String.Format("{0:0.000}", 0.5); sw.Write(" "); sw.Write(String.Format("{0:0.000}", double.Parse(read["Quantity"].ToString())).Replace(",", ".") + "/"); sw.Write(" "); sw.Write(String.Format("{0:0.00}", double.Parse(read["Price"].ToString())).Replace(",", ".") + "/"); sw.Write(" 99/"); sw.Write(" " + read["MainGroupItemCode"].ToString() + "/"); sw.WriteLine(); } sw.WriteLine(read["Total"].ToString());//I get error in this line invalid attempt to read when no data is present sw.Close(); read.Close(); con.Close(); } 并使用RelativeLayout作为android:layout_centerInParent="true"

Button

输出:

enter image description here

答案 1 :(得分:0)

不幸的是,LinearLayouts不是最好的。 FrameLayout,RelativeLayout或ConstraintLayout将为您提供执行所需操作的灵活性。

答案 2 :(得分:0)

尝试使用重力

<Button
            android:id="@+id/okbutton"
            android:layout_width="wrap_content"
            android:layout_height="300dp"
            android:text="text"
            android:gravity="center"
            android:layout_gravity="center_horizontal"
            android:textSize="50sp" />

答案 3 :(得分:0)

使用RelativeLayout然后添加代码:

android:gravity="center"
android:layout_gravity="center_horizontal"
在您的Button XML中

另外,您可以使用AndroidStudio的“设计”工具进行布局:您可以添加一个按钮,然后在预览中随意拖动。

但是,有很多这样的帖子:下次尝试更好地搜索:D

答案 4 :(得分:0)

在你的按钮

中添加这两行
android:gravity="center"
android:layout_gravity="center_horizontal"

参考此图片以正确理解重力的使用

enter image description here  https://i.stack.imgur.com/WYFLU.png

答案 5 :(得分:0)

只需在按钮xml设计中使用这行代码 -

android:gravity="center"

有关更多建议,请查看此链接 - Center a button in a Linear layout