我必须在右侧放置秒TextView和ImageView,但是重力不会移动。我能怎么做?也许“重力”不合适吗? 谢谢!
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/JuventusLogo"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="JUVENTUS"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="REAL MADRID"/>
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="right"
android:src="@drawable/RealMadridLogo"/>
</LinearLayout>
答案 0 :(得分:-1)
您可以使用以下方法实现此目标:
ConstraintLayout允许您使用平面视图层次结构创建复杂的布局(没有嵌套的视图组,例如您的示例中的LinearLayout
)。与RelativeLayout
相似之处在于,所有视图都是根据同级之间的关系进行布局的。 ConstraintLayout
比RelativeLayout
具有更大的灵活性,并且性能更好。
ConstraintLayout
作为支持库可用,因此您必须添加新的依赖项:
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
您可以找到有关differences between ConstraintLayout and RelativeLayout或How to use constraint (relations)的帖子
示例:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="30dp"
tools:context=".MainActivity">
<ImageView
android:id="@+id/first_logo"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="#F00"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/first_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="JUVENTUS"
app:layout_constraintBottom_toBottomOf="@id/first_logo"
app:layout_constraintStart_toEndOf="@id/first_logo"
app:layout_constraintTop_toTopOf="@id/first_logo" />
<TextView
android:id="@+id/second_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="REAL MADRID"
app:layout_constraintBottom_toBottomOf="@id/second_logo"
app:layout_constraintEnd_toStartOf="@id/second_logo"
app:layout_constraintTop_toTopOf="@id/second_logo" />
<ImageView
android:id="@+id/second_logo"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="end"
android:background="#00F"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
LinearLayout
是一个视图组,它在一个方向(如您的示例中的垂直或水平)上对齐所有子级。您可以在各个子视图上设置android:layout_weight
,以指定线性布局如何在其中包含的视图之间分配剩余空间。
关于此的帖子很多:
示例:
<?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:paddingLeft="16dp"
android:paddingRight="16dp">
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:background="#F00" />
<TextView
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="JUVENTUS" />
<TextView
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_gravity="end"
android:layout_weight="1"
android:gravity="center_vertical|end"
android:text="REAL MADRID" />
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:background="#00F" />
</LinearLayout>