Android布局 - 左侧视图和父级中心视图

时间:2014-01-03 19:20:15

标签: android android-layout relativelayout

很抱歉,如果之前已经提出过这个问题,但我还没有在Google / SO上看过任何内容,令我感到沮丧的是我编写过的所有内容都没有用。

我想要完成的是在左侧对齐菜单ImageButton并在屏幕上居中显示ImageView徽标。但是,如果徽标图像太大,它会与菜单按钮重叠,因此我添加了layout_toRightOf。不幸的是,徽标不再居中。

我也试过使用LinearLayout但没有运气。

这是我目前的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:rounded="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<!-- Title Bar -->
<TextView
    android:id="@+id/titleBar"
    android:layout_width="match_parent"
    android:layout_height="45dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="#000000"
    android:clickable="true"
    android:gravity="center"
    android:text=""
    android:textAlignment="center"
    android:textColor="#FFFFFF" />


<ImageButton
    android:id="@+id/menuButton"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="4dp"
    android:layout_marginTop="2dp"
    android:scaleType="fitCenter"
    android:src="@drawable/menu_item_lite"/>

<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:layout_alignTop="@+id/menuButton"
    android:layout_toRightOf="@+id/menuButton"
    android:layout_centerHorizontal="true"
    android:paddingRight="10dp"
    android:paddingLeft="5dp"
    android:scaleType="fitCenter"
    android:src="@drawable/logo" />
<RelativeLayout/>

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

如果您正在尝试确保imageView始终位于屏幕中心,并且始终位于menuButton的右侧,您可以采用(略微hacky)方法添加另一个不可见的菜单按钮。屏幕右侧,中心图像也是如此。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:rounded="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rootView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <!-- Title Bar -->
    <TextView
        android:id="@+id/titleBar"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="#000000"
        android:clickable="true"
        android:gravity="center"
        android:text=""
        android:textAlignment="center"
        android:textColor="#FFFFFF" />


    <ImageButton
        android:id="@+id/menuButton"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="4dp"
        android:layout_marginTop="2dp"
        android:scaleType="fitCenter"
        android:src="@drawable/menu_item_lite"/>

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_alignTop="@+id/menuButton"
        android:layout_toRightOf="@+id/menuButton"
        android:layout_toLeftOf="@+id/invisibleMenuButton"
        android:layout_centerHorizontal="true"
        android:paddingRight="10dp"
        android:paddingLeft="5dp"
        android:scaleType="fitCenter"
        android:src="@drawable/logo" />

    <ImageButton
        android:id="@+id/invisibleMenuButton"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="4dp"
        android:layout_marginTop="2dp"
        android:scaleType="fitCenter"
        android:src="@drawable/menu_item_lite"
        android:visibility="invisible"/>
</RelativeLayout>

答案 1 :(得分:0)

你可以反过来做,将徽标居中并在图像按钮中使用toLeftOf

答案 2 :(得分:0)

您可以更改图像的顺序,以便菜单图像始终位于徽标上方:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:rounded="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<!-- Title Bar -->
<TextView
    android:id="@+id/titleBar"
    android:layout_width="match_parent"
    android:layout_height="45dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="#000000"
    android:clickable="true"
    android:gravity="center"
    android:text=""
    android:textAlignment="center"
    android:textColor="#FFFFFF" />


<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:layout_alignTop="@+id/menuButton"
    android:layout_toRightOf="@+id/menuButton"
    android:layout_centerHorizontal="true"
    android:paddingRight="10dp"
    android:paddingLeft="5dp"
    android:scaleType="fitCenter"
    android:src="@drawable/logo" />    
<ImageButton
    android:id="@+id/menuButton"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="4dp"
    android:layout_marginTop="2dp"
    android:scaleType="fitCenter"
    android:src="@drawable/menu_item_lite"/>


<RelativeLayout/>