ImageViews和按钮Android应用程序

时间:2013-11-08 08:32:27

标签: android button imageview tablelayout

我正在尝试构建一个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>

为什么会这样?

4 个答案:

答案 0 :(得分:1)

原因是因为在使用TableLayout时,每个TableRow的每个相同列的大小都相同。由于ImageViewButton都位于第0列,因此影响Button宽度的所有内容也会影响ImageView的宽度。

如果您允许Button跨越多列,请将android:layout_span="2"添加到Button。否则,请使用不同的布局,例如LinearLayoutRelativeLayout

答案 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"按钮,此行也添加到其他组件