0

我试图在其 LinearLayout 父级中将 RelativeLayout 居中。

但它一直在左边。

在此处输入图像描述

我怎样才能解决这个问题?

顺便说一句,当前只有两者中的一个可见:(刷新/动作线性布局)

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/app_widget_root"
              android:layout_width="wrap_content"
              android:layout_height="90dp"
              android:orientation="vertical"
              android:padding="0dp"
              android:clickable="true"
              android:focusable="true"
              android:background="@drawable/widget_bg_main"
              >
              <!--   -->
             <RelativeLayout 
              android:id="@+id/layout_main"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="horizontal" 
              android:layout_gravity="center_vertical"  
              android:gravity="center_vertical"           
              >

                        <!--========================================================================
                            * Action layout - action buttons container
                            ======================================================================== -->
                        <LinearLayout 
                        android:id="@+id/layout_action"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:orientation="vertical"
                        android:gravity="center_horizontal"
                        android:layout_toRightOf="@+id/layout_information"
                        >
                        <ImageView android:id="@+id/image_action"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:src="@drawable/widget_bt_drive_disabled"
                         android:layout_marginTop="25dp"
                        />
                        <TextView
                         android:id="@+id/text_view_action"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:textSize="15sp"
                         android:textStyle="bold"       
                         android:layout_marginTop="6dp"
                         android:textColor="@color/disabled_white"                       
                         android:text="Drive!"                
                        />
                        </LinearLayout> <!-- Action layout -->
                    <!--========================================================================
                        * Refresh layout - refresh layout
                        ======================================================================== -->              
                        <RelativeLayout 
                              android:id="@+id/layout_refresh"
                              android:layout_width="fill_parent"
                              android:layout_height="110dp"
                              android:orientation="horizontal"
                              android:layout_gravity="center_horizontal"
                              android:visibility="invisible"      
                              android:layout_marginTop="5dp"
                              android:layout_marginLeft="72dp"
                              >
                              <!-- 
                              android:clickable="true"
                              android:background="@android:drawable/list_selector_background" -->
                              <ImageView android:id="@+id/image_refresh"
                              android:layout_width="wrap_content"
                              android:layout_height="wrap_content"
                              android:src="@drawable/widget_bt_refresh_idle"
                              android:layout_gravity="center"
                             />

                              <TextView android:id="@+id/refresh_text"
                              android:layout_width="wrap_content"
                              android:layout_height="wrap_content"
                              android:textSize="18sp"
                              android:layout_marginTop="25dp"
                              android:layout_marginLeft="35dp"
                              android:textColor="@color/solid_white"                         
                              android:text="Click to refresh"                
                              />
                      </RelativeLayout> <!--  refresh notification view -->
              </RelativeLayout> <!--  main view -->             
</LinearLayout>

更新1

我尝试了以下失败:

<RelativeLayout 
                              android:id="@+id/layout_refresh"
                              android:layout_width="fill_parent"
                              android:layout_height="110dp"
                              android:orientation="horizontal"
                              android:visibility="invisible"      
                              android:layout_alignLeft="@+id/layout_status_image"    
                              android:layout_marginTop="5dp"
                              android:layout_marginLeft="72dp"
                              android:gravity="center"
                              android:layout_gravity="center"
                              >
                              <!-- 
                              android:clickable="true"
                              android:background="@android:drawable/list_selector_background" -->
                              <ImageView android:id="@+id/image_refresh"
                              android:layout_width="wrap_content"
                              android:layout_height="wrap_content"
                              android:src="@drawable/widget_bt_refresh_idle"
                              android:layout_centerInParent="true"
                              />

                              <TextView android:id="@+id/refresh_text"
                              android:layout_width="wrap_content"
                              android:layout_height="wrap_content"
                              android:textSize="18sp"
                              android:layout_marginTop="25dp"
                              android:layout_marginLeft="35dp"
                              android:textColor="@color/solid_white"                         
                              android:text="Click to refresh"                
                              />

在此处输入图像描述

我想把图片和文字放在中间

更新 3

XML

android:id="@+id/app_widget_root"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@drawable/widget_bg_main"

android:clickable="true"

android:focusable="true"

android:orientation="horizontal"

android:padding="0dp" 

android:gravity="center_vertical"

>



   <RelativeLayout

        android:id="@+id/layout_status_image"

        android:layout_width="82dp"

        android:layout_height="fill_parent"

        android:layout_gravity="center_vertical"

        android:gravity="center_vertical"

        android:orientation="horizontal" 

        android:layout_weight=".2">





        <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_marginLeft="1dp"

            android:layout_marginTop="1dp" 

            android:layout_centerInParent="true">



            <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:orientation="vertical" 

        android:layout_weight=".6"

        >



        <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:gravity="center"

        android:orientation="vertical"

        android:layout_weight=".2"

        >



        <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 -->

屏幕:

在此处输入图像描述

我已经删除了 relativeLayout,但它Refresh Text 并没有在它的框中居中。

知道为什么吗?

4

4 回答 4

1

你全都错了。尝试这个

<ImageView android:id="@+id/image_refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/widget_bt_refresh_idle"
android:layout_centerInParent="true"  -dont use gravity, use centerInParent-
/>
<TextView android:id="@+id/refresh_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
                            NOTICE THESE TWO LINES HERE
android:layout_centerHorizontal="" -dont use margins, use centerHorizontal-
android:layout_below="@id/image_refresh" -use below imagerefresh, this should work-
                            END
android:textColor="@color/solid_white"                         
android:text="Click to refresh"                
/>

基础知识

LinearLayout 理解 layout_gravity 和 layout_weights。RelativeLayout 不理解 layout_gravity。

您的 RelativeLayout 中的android:layout_alignLeft="@+id/layout_status_image"是正确的。它将刷新布局放置在布局layout_status_image的左侧。

于 2013-07-25T07:19:45.437 回答
1

1 - 在线性布局中:使用重力/布局重力/重量

2 - 在 Relaive 布局中:使用 layout_centerInParent/ layout_alignParent... / layout_toRightOf-layout_toLeftOf

于 2013-07-24T14:43:18.430 回答
0

试试这个代码......

<RelativeLayout 
        android:id="@+id/layout_refresh"
        android:layout_width="fill_parent"
        android:layout_height="110dp"
        android:layout_marginTop="5dp"
        android:layout_centerHorizontal="true"
        >
        <!-- 
        android:clickable="true"
        android:background="@android:drawable/list_selector_background" -->

        <LinearLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_centerInParent="true"
            android:gravity="fill_horizontal">

        <ImageView 
            android:id="@+id/image_refresh"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/icon"
            android:layout_gravity="center_horizontal"
       />

        <TextView 
            android:id="@+id/refresh_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:layout_marginTop="5dp"
            android:textColor="@android:color/white"                         
            android:text="Click to refresh"                
        />

        </LinearLayout>

</RelativeLayout> <!--  refresh notification view -->

在此您需要更改图像 src,因为我没有您使用的此图像,因此我在这里使用 iclauncher 图像...

现在,它完美地位于您布局的任何大小的中心。

您可以根据需要使用可见和不可见。

于 2013-07-25T11:22:17.047 回答
0

代码中的布局太多。

任何地方都不需要相对布局。

请根据需要编辑 imageview 中的图像。如果这不能解决您的问题。请张贴您想要对图像和文本执行的操作。将向您发送固定代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/app_widget_root"
              android:layout_width="match_parent"
              android:layout_height="90dp"
              android:orientation="horizontal"
              android:clickable="true"
              android:focusable="true"
              android:background="@android:color/white"
              android:baselineAligned="false">


    <!--========================================================================
        * Action layout - action buttons container
        ======================================================================== -->
    <LinearLayout
            android:id="@+id/layout_action"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:gravity="center_horizontal|center_vertical"
            android:layout_weight="5">

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

        <TextView
                android:id="@+id/text_view_action"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="15sp"
                android:textStyle="bold"
                android:textColor="@android:color/black"
                android:text="Drive!"
                />
    </LinearLayout>
    <!-- Action layout -->
    <!--========================================================================
        * Refresh layout - refresh layout
        ======================================================================== -->
    <LinearLayout
            android:id="@+id/layout_refresh"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:visibility="visible"
            android:gravity="center_horizontal|center_vertical"
            android:layout_weight="5">

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

        <TextView
                android:id="@+id/refresh_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="15sp"
                android:textStyle="bold"
                android:textColor="@android:color/black"
                android:text="Refresh"/>
    </LinearLayout>

</LinearLayout>
于 2013-07-25T21:11:22.557 回答