我是android编程的新手,我正在尝试了解android架构以及如何围绕它构建应用程序。
所以到目前为止还没有现实世界的需要。它只是我正在做的一些实验来学习这些东西。我想要的是3个不同的视图,TextView,EditText和Button,彼此水平相邻。为了实现这一目标,我使用的是activity_main.xml: -
<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="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" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<EditText android:id="@+id/edit_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text_to_appear_on_button" />
</LinearLayout>
在onCreate()中运行具有setContentView(R.layout.activity_main);的MainActivity.java时,我在屏幕上获取TextView和EditText小部件,水平地彼此相邻,但不是Button 。我想知道为什么?
奇怪的是,我观察到里面的最后一个元素
<LinearLayout>..</LinearLayout>
是从屏幕上消失的那个。因此,如果<Button .. />
与说<TextView .. />
交换,则其<TextView>
元素现在在屏幕上不可见。
请解释我在这里错过了什么。
我在模拟器上运行MainActivity.java并使用Eclipse作为我的IDE,如果这些信息有助于进一步帮助。
答案 0 :(得分:1)
这取决于你想做什么。如果你想在LinearLayout
水平放置三件事,你可能会在屏幕上用完空间。为了保证所有三个都合适,设置:
android:layout_width="match_parent"
android:layout_weight="1"
对于所有人3.您可以根据需要调整重量,但基本上这将告诉渲染水平地适应屏幕上的所有三个对象,每个对象占据屏幕的1/3(如果您更改重量,它将是不同的值)。
如果使用LinearLayout
,您可能会嵌套多个布局,主垂直LinearLayout
包含多个水平布局。这是一种有效的方法,可能是一个偏好问题。 LinearLayout
允许权重,这可能非常有用,因为它们是保证事物不会被屏幕切断的一种方式。
RelativeLayout
是另一种方法,您可以在其中指定屏幕上的内容相对于彼此的位置(左侧,右侧,上方,下方)。虽然这些不使用权重,但您可以将元素与屏幕边缘对齐并获得相同的效果。
正如我所说,这种做法在很大程度上取决于偏好,通常两种网格都很有效。
答案 1 :(得分:1)
我建议你使用xml的相对布局,如果你使用线性,你的小部件是逐个分配的,而不是你的愿望。你的进一步发展
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="101dp"
android:layout_marginTop="50dp"
android:text="TextView" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="67dp"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/editText1"
android:layout_marginTop="59dp"
android:text="Button" />
</RelativeLayout>