如何使用权重对LinearLayout内部的比例进行缩放,然后在图像右侧放置一个标签?下面的示例显示3行具有相同的高度,每个行都需要位于其右侧的TextView。简而言之:图像在左侧,文本在右侧。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<ImageView
android:id="@+id/a1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#33B5E5"
android:contentDescription="@string/app_name"
android:scaleType="fitStart"
android:src="@android:drawable/star_big_on" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/a1"
android:text="@string/app_name" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<ImageView
android:id="@+id/a2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#AA66CC"
android:contentDescription="@string/app_name"
android:scaleType="fitXY"
android:src="@android:drawable/star_big_on" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/a2"
android:text="@string/app_name" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<ImageView
android:id="@+id/a3"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#FF4444"
android:contentDescription="@string/app_name"
android:scaleType="fitStart"
android:src="@android:drawable/star_big_on" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/a3"
android:text="@string/app_name" />
</RelativeLayout>
</LinearLayout>
答案 0 :(得分:0)
ImageViews的宽度和高度大多不符合您想要达到的目的。
试试这个,然后比较两者以找出问题:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#33B5E5" >
<ImageView
android:id="@+id/a1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="#33B5E5"
android:contentDescription="@string/app_name"
android:scaleType="fitStart"
android:src="@android:drawable/star_big_on" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/a1"
android:text="@string/app_name" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#AA66CC" >
<ImageView
android:id="@+id/a2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/app_name"
android:scaleType="fitXY"
android:src="@android:drawable/star_big_on" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/a2"
android:text="@string/app_name" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#FF4444" >
<ImageView
android:id="@+id/a3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/app_name"
android:scaleType="fitStart"
android:src="@android:drawable/star_big_on" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/a3"
android:text="@string/app_name" />
</RelativeLayout>
</LinearLayout>
请注意,这并未在ADT工具图形布局中正确显示 - 但它在设备上显示。
答案 1 :(得分:0)
对于您要寻找的内容,我建议您使用水平线性布局而不是相对布局。这允许您使用权重进行水平放置,为您提供所需的内容:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<ImageView
android:id="@+id/ImageView03"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#FF4444"
android:contentDescription="@string/app_name"
android:scaleType="fitStart"
android:src="@android:drawable/star_big_on" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:text="@string/app_name" />
</LinearLayout>
这样可以使TextView仅占用所需的空间(右侧),图像将占据水平布局的所有剩余空间(左侧)。水平布局将均匀占据垂直布局中的可用空间。
注意:这将为您提供“嵌套权重对性能不利”的警告,但是因为这是一个简单的布局,并且嵌套权重对于纵向和横向是分开的,所以它不应该对性能产生任何明显的影响。如果你在重复视图中使用它或者你的布局复杂得多,我会推荐别的东西。