我想将LinearLayout
中的文本和图像对齐在同一行中。我曾考虑过在layout_gravity
与TextView
内的ImageView
和LinearLayout
中使用orientation=horizontal
选项,但这似乎不起作用。有什么原因吗?
显然,layout_gravity
仅适用于orientation=vertical
。
我可以在主线性布局中使用多个线性布局,但是正在寻找一种优雅的方法。
以下是同一代码:
<?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:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center_horizontal"
android:background="#e3e2ad"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="Layout's Vertical Orientation" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#bcf5b1"
android:layout_gravity="left"
android:text="left" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:src="@drawable/pigeon"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#d6c6cd"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="Layout's Horizontal Orientation" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#bcf5b1"
android:layout_gravity="left"
android:text="left" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:src="@drawable/pigeon"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
我已经在这里检查了该问题的答案,但是并没有解决该问题。 Difference between gravity and layout_gravity on Android
答案 0 :(得分:0)
用您的代码替换此布局,并根据需要更改权重
您必须将android:layout_weight
传递给子视图
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center_horizontal"
android:layout_weight="0.33"
android:text="Layout's Vertical Orientation"
android:textSize="24sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="left"
android:layout_weight="0.33"
android:background="#bcf5b1"
android:text="left" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="right"
android:layout_weight="0.33"
android:src="@drawable/pigeon" />
</LinearLayout>
答案 1 :(得分:0)
在线性布局内使用另一个相对布局,并在其下添加textview和imageview。然后,您将它们对齐在同一行。
<?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:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center_horizontal"
android:background="#e3e2ad"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="Layout's Vertical Orientation" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#bcf5b1"
android:layout_gravity="left"
android:text="left" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:src="@drawable/pigeon"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#d6c6cd"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="Layout's Horizontal Orientation" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#bcf5b1"
//android:layout_weight="0.5"
android:layout_gravity="left"
android:text="left" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
//android:layout_weight="0.5"
android:src="@drawable/pigeon"/>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
也请尝试添加我上面在评论中提到的权重。那会帮助
答案 2 :(得分:0)
您可以使用RelativeLayout,android:layout_alignParentRight =“ true” ontrol位于父控件的右侧。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#bcf5b1"
android:text="left" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:src="@drawable/ic_launcher_background"/>
</RelativeLayout>
答案 3 :(得分:0)
根据我的研究,您已经通过指定“水平”来告诉您要使内容从左到右对齐,因此layout_gravity
可以指定的唯一选项是像{{1} }或top
。我强烈建议对this question的第一个答案。简短的答案可能是,是的,即使(我认为)您想为横向屏幕模式指定布局,也必须指定bottom
方向。
如果您想要垂直和水平方向的不同属性you need to create two separate files,vertical
中的一个。
考虑到一些关于垂直与水平布局而不是纵向(垂直)与横向(水平)屏幕方向的问题,这更加令人困惑不要怪你没有直截了当的答案。
此外,我建议使用RelativeLayout或据称效率更高的ConstraintLayout,这可能需要一些时间来习惯,但可能是您正在寻找的优雅解决方案。