textView拒绝作为LinearLayout的儿子居中

时间:2013-07-26 17:57:40

标签: java android xml layout android-linearlayout

我尝试将refresh符号和文字居中。

但文字与右边对齐。

为什么?

XML

<RelativeLayout
    android:id="@+id/layout_status_image"
    android:layout_width="82dp"
    android:layout_height="fill_parent"
    android:layout_gravity="center_vertical"
    android:layout_weight=".2"
    android:gravity="center_vertical"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/image_status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="9dp"
        android:src="@drawable/widget_icon_no_data"
        android:visibility="invisible" />

    <!--
  Layout is necessary because the setVisibility of ProgressBar is not working 
  through remote views in 2.1. So wrapped by this layout 
    -->

    <FrameLayout
        android:id="@+android:id/widget_progress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginLeft="1dp"
        android:layout_marginTop="1dp" >

        <ProgressBar
            style="?android:attr/progressBarStyle"
            android:layout_width="39dp"
            android:layout_height="39dp"
            android:indeterminateOnly="true"
            android:orientation="vertical" />
    </FrameLayout>
</RelativeLayout> <!-- Status image layout -->


<!--
========================================================================
* Information layout - contains all the texts 
========================================================================
-->

<LinearLayout
    android:id="@+id/layout_information"
    android:layout_width="190dp"
    android:layout_height="fill_parent"
    android:layout_weight=".6"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/text_view_destination"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="8dp"
        android:text="\@ Home in"
        android:textColor="@color/solid_white"
        android:textSize="19sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/text_view_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:paddingLeft="9dp"
        android:textColor="@color/solid_white"
        android:textSize="25sp"
        android:textStyle="normal" />
</LinearLayout> <!-- Information layout -->


<!--
========================================================================
* Action layout - action buttons container
========================================================================
-->

<LinearLayout
    android:id="@+id/layout_action"
    android:layout_width="80dp"
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:layout_weight=".2"
    android:gravity="center"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/image_action"
        android:layout_width="wrap_content"
        android:layout_height="wrap_contenth"
        android:src="@drawable/widget_bt_drive_disabled" />

    <TextView
        android:id="@+id/h"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:text="Refresh"
        android:textColor="@color/disabled_white"
        android:textSize="15sp"
        android:textStyle="bold" />
</LinearLayout> <!-- Action layout -->

屏幕:

enter image description here

4 个答案:

答案 0 :(得分:2)

这是因为您已将TextView宽度设置为fill_parentTextView现在是布局的全宽,因此从技术上讲它是居中的。将其更改为wrap_content或将TextView重力设置为center

答案 1 :(得分:1)

由于TextView's宽度设置为fill_parent(改为使用match_parent),因此将TextView's重力设置为center将解决此问题。试试这个:

<LinearLayout
    android:id="@+id/layout_action"
    android:layout_width="80dp"
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:gravity="center"                     <-- Added
    android:orientation="vertical"
    android:layout_weight=".2" >



    <ImageView
        android:id="@+id/image_action"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/deletelight1" />



    <TextView
        android:id="@+id/h"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:text="Refresh"
        android:gravity="center"
        android:textColor="@color/black"
        android:textSize="15sp"
        android:textStyle="bold" />
</LinearLayout>

您也可以通过将TextView's layout_width更改为wrap_content来解决此问题。在这种情况下,不需要将TextView's重力属性设置为center

修改1

将以下代码复制并粘贴到xml布局文件中,并切换到Graphical Layout以查看其中一个组件具有固定高度时layout_weight如何工作。由于以下为LinearLayout vertical方向,因此我已将0dp指定为TextViews的高度,并将50dp的固定高度设置为ImageView layout_weights。您将看到TextView的高度取决于它们各自的50dp以及将<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_action" android:layout_width="80dp" android:layout_height="fill_parent" android:layout_gravity="center" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/image_action" android:layout_width="wrap_content" android:layout_height="50dp" android:src="@drawable/widget_bt_drive_disabled" /> <TextView android:id="@+id/h1" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_marginTop="6dp" android:text="Refresh 50" android:textColor="@color/disabled_white" android:textSize="15sp" android:textStyle="bold" android:layout_weight="50" /> <TextView android:id="@+id/h2" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_marginTop="6dp" android:text="Refresh 25" android:textColor="@color/disabled_white" android:textSize="15sp" android:layout_weight="25" android:textStyle="bold" /> <TextView android:id="@+id/h3" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_marginTop="6dp" android:text="Refresh 10" android:textColor="@color/disabled_white" android:textSize="15sp" android:layout_weight="10" android:textStyle="bold" /> <TextView android:id="@+id/h4" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_marginTop="6dp" android:text="Refresh 15" android:textColor="@color/disabled_white" android:textSize="15sp" android:textStyle="bold" android:layout_weight="15" /> </LinearLayout> 分配给ImageView后剩余的空间。

{{1}}

答案 2 :(得分:1)

android:gravity="center"添加到您的TextView

答案 3 :(得分:-1)

嘿,只需在文本视图中添加填充。 或将重力设为中心。没事的...!! 确保你设置重力而不是LayoutGravity