我正在写一款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
。但是当我查看设计器时,文本视图并没有显示出来。当我在组件树中选择文本视图时,它会显示文本视图的位置:
P.S。图片并没有显示所有六个级别,因为我还没有制作它们。
如您所见,文本视图位于底部!当我选择ImageView
时,它表明它占据了其父级的所有空间!
我不知道为什么会这样,我的形象肯定是一个正方形!你能解释为什么会发生这种情况吗?我该如何解决?
如果您需要我的整个布局代码,请随时在评论中告诉我。
答案 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"/>