我有一个简单的相对布局,其中包含ImageView
的图标和TextView
的标题:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/Test.NavBar.Heading"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal">
<ImageView
style="@style/Test.NavBar.Heading.Icon"
android:id="@+id/test_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>
<TextView
style="@style/Test.NavBar.Heading.Text.Large"
android:id="@+id/test_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/test_logo"
android:layout_toEndOf="@+id/test_logo"
android:layout_alignTop="@id/test_logo"
android:layout_alignBottom="@id/test_logo"
android:gravity="center_vertical"
android:text="My Title"/>
</RelativeLayout>
这是嵌入在另一个视图中,它使我的视图水平居中。一切都很好,除了我需要将布局置于TextView
而不是RelativeLayout
的中心。
我唯一可以访问的是一个属性,它为ImageView
提供了iconWidth
中项目的宽度,称为android:layout_marginLeft="?attr/iconWidth"
。通常,您可以使用margin属性来偏移布局,例如上面我可以添加
android:layout_marginLeft="-?attr/iconWidth"
但是将布局推向右侧而不是左侧。相反,我需要做类似的事情:
RelativeLayout
除了当然没有有效的语法。
我必须在一个布局中执行此操作,并且必须以XML格式执行此操作,并且无法要求添加其他属性。鉴于这些约束,我如何根据需要偏移{{1}}的内容?
答案 0 :(得分:0)
经过各种尝试找到解决方案之后,我发现最好的方法就是在文本后添加另一个图标,但要使其不可见:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/Test.NavBar.Heading"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal">
<ImageView
style="@style/Test.NavBar.Heading.Icon"
android:id="@+id/test_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>
<TextView
style="@style/Test.NavBar.Heading.Text.Large"
android:id="@+id/test_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/test_logo"
android:layout_toEndOf="@+id/test_logo"
android:layout_alignTop="@id/test_logo"
android:layout_alignBottom="@id/test_logo"
android:gravity="center_vertical"
android:text="My Title"/>
<ImageView
style="@style/Test.NavBar.Heading.Icon"
android:id="@+id/test_blank"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/test_title"
android:layout_toEndOf="@+id/test_title"
android:src="@drawable/ic_launcher"
android:visibility="invisible"/>
</RelativeLayout>
使用这个额外但不可见的图标,TextView
现在位于RelativeLayout
的中间,这解决了问题。