我正在尝试构建一个Android应用程序,我创建了一个带有表格布局的屏幕,并在第一个表格行中添加了一个图像视图和两个大文本,到第二行我添加了一个按钮。登记/> 当我更改按钮的文本时,它会自动更改上方图像视图的大小以匹配按钮的大小。
以下是代码:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/TableLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".ChildInfoActivity" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
android:contentDescription="@string/child_info_image_descreption" />
<TextView
android:id="@+id/childInfoNameTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/name_text_view"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_gravity="center_vertical" />
<TextView
android:id="@+id/childInfoHasArrivedTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/has_arrived_text_view"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_gravity="center_vertical" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/more_info_button"
android:layout_weight="1" />
</TableRow>
为什么会这样?
答案 0 :(得分:1)
原因是因为在使用TableLayout
时,每个TableRow
的每个相同列的大小都相同。由于ImageView
和Button
都位于第0列,因此影响Button
宽度的所有内容也会影响ImageView
的宽度。
如果您允许Button
跨越多列,请将android:layout_span="2"
添加到Button
。否则,请使用不同的布局,例如LinearLayout
或RelativeLayout
。
答案 1 :(得分:0)
你的按钮有
android:layout_width="wrap_content"
。如果你设置
android:layout_width="100dp"
然后你的宽度不会动态。
答案 2 :(得分:0)
因为包含imageView和textViews的行项具有“wrap_content”值作为高度。因此,当您的文本高度变得比图像视图更大时,它也可能会增加其父高度。
您可以尝试将imageView和textViews放在relativeLayout中,并使用imageViews height包装textViews,然后将relativeLayout放入行项目中。它将被嵌套,但我认为它仍然比给定的确切大小更好,因为这样在某些设备上看起来不会那么好......
答案 3 :(得分:0)
删除android:layout_gravity="center_vertical"
,因为您已添加android:layout_weight="1"
按钮,此行也添加到其他组件