线性布局:按钮文本趋向右侧

时间:2016-04-01 08:20:02

标签: android android-layout android-linearlayout

最近我将RelativeLayout更改为LinearLayout,因为我的按钮文本总是放在右侧。我希望看到它集中。

enter image description here

更改android:ems并不值得,因为不同的语言会传递不同的值。

这就是我的按钮的样子。由于android:layout_withandroid:layout_height保留wrap_content值,这无济于事。

<Button
      android:id="@+id/buttonLog"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:background="@color/BackgroundToolbarGrey"
      android:gravity="center"
      android:text="@string/login"          
      android:textAllCaps="false"  
      android:textAlignment="center"        
      android:textColor="@color/aquamarin" 
      android:textSize="19sp"
 />

预览图片看起来不错。

enter image description here

这是我的登录屏幕的完整版本:

    <?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=".10"
    />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=".40"
        android:orientation="vertical"
        android:fontFamily="sans-serif" >

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/etLogin"
            android:hint="@string/usernamehint"
            .../>

        <EditText
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:fontFamily="sans-serif"
            android:ems="10"
            android:id="@+id/etPass"
            ...
            />

        <Button
             android:id="@+id/buttonLog"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:background="@color/BackgroundToolbarGrey"
             android:gravity="center"
             android:text="@string/login"          
             android:textAllCaps="false"  
             android:textAlignment="center"        
             android:textColor="@color/aquamarin" 
             android:textSize="19sp"
            android:layout_marginRight="@dimen/abc_dropdownitem_text_padding_right"
         />

    />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=".50"
        />
    </LinearLayout>

4 个答案:

答案 0 :(得分:0)

你有这个:

android:textAlignment="gravity"

当你有这个时,这项工作:

 android:gravity="center"

所以:

<?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="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=".10" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=".40"
        android:fontFamily="sans-serif"
        android:orientation="vertical">

        <EditText
            android:id="@+id/etLogin"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/usernamehint" />

        <EditText
            android:id="@+id/etPass"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:fontFamily="sans-serif" />

        <Button
            android:id="@+id/buttonLog"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_marginRight="@dimen/abc_dropdownitem_text_padding_right"
            android:background="@color/BackgroundToolbarGrey"
            android:gravity="center"
            android:text="login"
            android:textAlignment="gravity"
            android:textAllCaps="false"
            android:textColor="@color/EscosAquamarin"
            android:textSize="19sp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=".50" />
</LinearLayout>

答案 1 :(得分:0)

添加

android:layout_gravity="center_horizontal" 

按钮的属性应该可以解决问题。它告诉父母如何布置自己。

答案 2 :(得分:0)

代码<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/login" android:id="@+id/buttonLog" android:textAllCaps="false" android:gravity="center" android:layout_gravity="right" android:textColor="@color/aquamarin" android:background="@color/BackgroundToolbarGrey" android:textAlignment="center" android:textSize="19sp" android:layout_marginRight="@dimen/abc_dropdownitem_text_padding_right" />中的

android:layout_gravity="right"更改为android:layout_gravity="centre"

答案 3 :(得分:0)

问题在于这个属性在RelativeLayout中运行正常,并且在LinearLayout中使按钮变小并且没有中断

android:background="@color/BackgroundToolbarGrey"

我用我的jaca Activity类中的方法替换它:

 buttonLog.setBackgroundColor(getResources().getColor(R.color.BackgroundToolbarGrey));