为什么我在ImageView下的TextView没有显示

时间:2015-09-28 06:04:58

标签: android android-layout imageview android-xml

我正在写一款Android游戏。在关卡选择活动的布局文件中,我想布置关卡'按钮(它们实际上是ImageView s),如下所示:

x x x
x x x

每个级别按钮都有一个TextView,其下方有该级别的文字名称(让我们将这两个视图称为"级别选择&#34 )。我用了很多LinearLayout来做这件事。以下是级别选择的代码:

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:layout_weight="1">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/angles"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/angles_level"
        android:textSize="@dimen/level_text_size"/>
</LinearLayout>

正如您所看到的,这两种观点&#39;高度和宽度均为wrap_content。但是当我查看设计器时,文本视图并没有显示出来。当我在组件树中选择文本视图时,它会显示文本视图的位置:

enter image description here

P.S。图片并没有显示所有六个级别,因为我还没有制作它们。

如您所见,文本视图位于底部!当我选择ImageView时,它表明它占据了其父级的所有空间!

enter image description here

我不知道为什么会这样,我的形象肯定是一个正方形!你能解释为什么会发生这种情况吗?我该如何解决?

如果您需要我的整个布局代码,请随时在评论中告诉我。

5 个答案:

答案 0 :(得分:1)

对我来说,最好的解决方案是通过代码(你有完全控制权)而不是xml来正确定位和调整大小。

无论如何,我认为你的问题可以通过设置ImageViews ScaleType

来解决
imageView1.setScaleType(ScaleType.FIT_START);

按XML:

  android:scaleType="fit_start"

希望这有帮助。

答案 1 :(得分:0)

当我研究布局时,我使用背景颜色进行textview。

如果在TextView的两个维度中都使用包装内容,那么由于您没有在其中写入任何文本,因此它是不可见的。换行内容意味着视图占用的空间最小。没有文字意味着0px;尝试使用layout_weight 1和layout_height 0dp设置ImageView和TextView。这样,两个视图占用父布局的一半空间

答案 2 :(得分:0)

因为现在,您的LinearLayout不知道如何分配其子项的比例。事实上,你的imageview的包装内容已经存在 消耗整个空间。

因此,LinearLayout说“抱歉TextView,你没有空间”。

对两个孩子使用layout_weight。 我想你想让你的照片大小是文字大小的两倍。 2:1

即,

<LinearLayout
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  android:gravity="center_horizontal"
  android:layout_weight="1">
    <ImageView
      android:layout_width="wrap_content"
      android:layout_height="0dp"
      android:layout_weight=2
      android:src="@drawable/angles"/>
    <TextView
      android:layout_width="wrap_content"
      android:layout_height="0dp"
      android:layout_weight=1
      android:text="@string/angles_level"
      android:textSize="@dimen/level_text_size"/>
</LinearLayout>

答案 3 :(得分:0)

我刚才意识到我发布了一个关于ImageView遗漏了太多空白的问题:

LinearLayout leaving out too much white space. Why?

我认为这和那个问题一样。所以我尝试在xml中将adjustViewBounds设置为true。它的工作原理!现在图像视图如下所示:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:src="@drawable/parallel_lines"/>

答案 4 :(得分:0)

您可以使用相对布局

    <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal">

       <ImageView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:src="@drawable/angles"/>
       <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@string/angles_level"
          android:textSize="@dimen/level_text_size"/>
</RelativeLayout>

或者简单的说,你可以通过这个

将textview的背景设置为该图像
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/angles_level"
    android:background="@drawable/angles"
    android:textSize="@dimen/level_text_size"/>