【问题标题】:How to set ImageView and the textView in a single line inside a LinearLayout如何在 LinearLayout 内的一行中设置 ImageView 和 textView
【发布时间】:2014-01-24 18:02:06
【问题描述】:

我正在努力在 LinearLayout 内的一行中设置一个 imageView 和一个 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="40dp"
    android:clickable="true"
    android:orientation="vertical"
    android:paddingLeft="40dp"
    tools:context=".MainActivity" >

    <ImageView 
        android:id="@+id/icon_image"
        android:layout_width="30sp"
        android:layout_height="30sp"
        android:layout_weight="1"
        android:adjustViewBounds="true"
        android:layout_gravity="bottom"
        android:scaleType="fitXY"
        android:src="@drawable/ic_launcher"/>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawablePadding="5dp"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:textSize="14sp"
        android:textStyle="bold" >
    </TextView>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@android:color/black" />

</LinearLayout> 

它是这样出现的:

我应该怎么做才能纠正这个问题?

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    它在 LinearLayout 的内部和垂直的 orientation 中,所以很自然地,所有东西都是“垂直”堆叠的。用水平的orientation 将它们包裹在LinearLayout 中

    <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="40dp"
    android:clickable="true"
    android:orientation="vertical"
    android:paddingLeft="40dp"
    tools:context=".MainActivity" >
    <LinearLayout
        .../>
    <ImageView 
        android:id="@+id/icon_image"
        android:layout_width="30sp"
        android:layout_height="30sp"
        android:layout_weight="1"
        android:adjustViewBounds="true"
        android:layout_gravity="bottom"
        android:scaleType="fitXY"
        android:src="@drawable/ic_launcher"/>
    
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawablePadding="5dp"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:textSize="14sp"
        android:textStyle="bold" >
    </TextView>
    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@android:color/black" />
    
    </LinearLayout> 
    

    默认情况下,LinearLayout 有一个水平的orientation,因此无需在包含两个Views 的子LinearLayout 中提供该属性。

    【讨论】:

    • 感谢您的回答。我照你说的做了。但是还是有一个小问题。文本显示不在行中。它有点上升。我该怎么做才能纠正它?
    • 不确定,因为我不知道“It got up bit up”到底是什么。也许您想使用android:layout_gravity="bottom",因为这就是您的ImageView。
    • 啊,是的,我都尝试过 android:gravity="bottom" 。虽然图像位于行上,但文本显示到行。
    • 然后在你的TextView中设置android:gravity="bottom"
    • 我之前的评论已经这样做了 :)。仍然存在同样的问题。 :(
    【解决方案2】:
    Use android:layout_gravity="center_vertical" for your textview
    

    【讨论】:

      【解决方案3】:

      我建议使用RelativeLayout。这样您也可以垂直添加更多项目。

      【讨论】:

      • 感谢您的建议,但无法更改布局。我需要在我的其余代码中使用 LinearLayout。
      【解决方案4】:

      您需要更改线性布局的方向。只需更改android:orientation="vertical"

      到

      android:orientation="horizontal"
      

      【讨论】:

      • 感谢您的回答。但是仅仅将当前方向更改为水平是行不通的。
      【解决方案5】:

      您可以尝试将 ImageViews 和 TextViews 包含在 TableLayout 中

      <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="40dp"
      android:clickable="true"
      android:orientation="vertical"
      android:paddingLeft="40dp"
      tools:context=".MainActivity" >
      
      <TableLayout 
      android:layout_width="fill_parent"
      android:layout_height="wrap_content">
      
      <TableRow>
      
      <ImageView 
          android:id="@+id/icon_image"
          android:layout_width="30sp"
          android:layout_height="30sp"
          android:layout_weight="1"
          android:adjustViewBounds="true"
          android:layout_gravity="bottom"
          android:scaleType="fitXY"
          android:src="@drawable/ic_launcher"/>
      
      <TextView
          android:id="@+id/textView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:drawablePadding="5dp"
          android:layout_weight="1"
          android:gravity="center_vertical"
          android:textSize="14sp"
          android:textStyle="bold" />
      </TableRow>
      </TableLayout>
      <View
          android:layout_width="match_parent"
          android:layout_height="1dp"
          android:background="@android:color/black" />
      

      【讨论】:

      • 感谢您的支持。但我需要对其余代码使用 。 :)
      • TableLayout 将被视为布局中的布局。如果有帮助,您可以将 android:layout_gravity="center_vertical" 添加到 TextView 以使其居中
      猜你喜欢
      • 1970-01-01
      • 2015-03-22
      • 2014-10-15
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多