这是一个外行问题,因为我在Android开发中完全是绿色的。
最近我正在尝试使用android实现一个简单的计算器。
我想制作两排计算器显示器, 顶部显示用户输入的等式, 最底层的答案。
这是布局xml文件中的代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
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=".MainActivity" >
<LinearLayout
android:id="@+id/linearLayout0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true">
<TextView
android:id="@+id/calculatorDisplay0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:maxLines="1"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="40sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_below="@+id/linearLayout0" >
<TextView
android:id="@+id/calculatorDisplay1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:layout_below="@id/calculatorDisplay0"
android:maxLines="1"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="0"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="40sp" />
</LinearLayout>
.
.
.
.
然而,这是结果:
如您所见,两条线嵌套在一起。
我很确定我的代码有问题, 但我无法找到它。 有人可以帮我吗?
答案 0 :(得分:2)
没有理由为每个文本视图使用单独的线性布局 - 将它们一个接一个地放入一个垂直方向的布局中:
<LinearLayout
android:id="@+id/linearLayout0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/calculatorDisplay0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:maxLines="1"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="40sp" />
<TextView
android:id="@+id/calculatorDisplay1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:maxLines="1"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="0"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="40sp" />
</LinearLayout>
此外,您还有一些不必要的属性,我在回答中删除了这些属性。
答案 1 :(得分:2)
不是添加两个LinearLayouts,而是添加两个TextView并将orientation
设置为vertical
。线性布局是用于存储“线性”内容的容器,因此一个孩子就是一个又一个。
<LinearLayout
android:id="@+id/linearLayout0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:orientation="vertical">
<TextView
android:id="@+id/calculatorDisplay0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:maxLines="1"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="40sp" />
<TextView
android:id="@+id/calculatorDisplay1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:layout_below="@id/calculatorDisplay0"
android:maxLines="1"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="0"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="40sp" />
</LinearLayout>
答案 2 :(得分:1)
尝试从linearLayout1删除android:layout_alignParentTop =“true”并在其顶部添加边距。
答案 3 :(得分:1)
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
这些是第二个LinearLayout中的属性,您已明确声明您希望第二个TextView(LinearLayout的内容)与顶部的内容重叠。我不确定,但我认为如果没有在LinearLayout中指定layout_*
属性,你会得到相同的结果。在第二次看,它忽略了接缝android:layout_below="@+id/linearLayout0"
属性。无论如何,它与layout_alignParentTop
发生冲突,将来要注意这一点。
您所描述的所需行为是具有android:orientation="vertical"
属性的LinearLayout的典型行为。你走在正确的轨道上。您需要更改的是在第一个LinearLayout中移动第二个TextView,因此它可以看到它有两个视图来管理和添加所需的orientation
属性,因为默认方向是水平的[1]。
布局XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
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=".MainActivity" >
<LinearLayout
android:id="@+id/linearLayout0"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/calculatorDisplay0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:maxLines="1"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="40sp" />
<TextView
android:id="@+id/calculatorDisplay1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:layout_below="@id/calculatorDisplay0"
android:maxLines="1"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="0"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="40sp" />
</LinearLayout>
.
.
.
.