Android 中线性布局内的线性布局

3
我正在尝试在Android中创建一个布局,当我在线性布局内创建另一个线性布局时,它被添加了但在界面上不可见。以下是我的代码:
<?xml version="1.0" encoding="utf-8"?>
<!-- Parent linear layout with vertical orientation -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:baselineAligned="_baseline"
    android:orientation="horizontal" >

  <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:padding="5dip"
      android:text="@string/name" />

  <EditText
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="top"
      android:layout_marginTop="0dp"
      android:ems="10" >

     <requestFocus />
  </EditText>

  <Button
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_marginTop="290dp"
      android:text="@string/submit" />

  <!-- Child linear layout with horizontal orientation -->

  <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:background="#2a2a2a"
      android:baselineAligned="_baseline"
      android:orientation="horizontal" >

  <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
         android:text="Previous" android:padding="15dip" android:layout_weight="1"
         android:gravity="center"/>

  <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
         android:text="Next" android:padding="15dip" android:layout_weight="1"
         android:gravity="center"/>  

  </LinearLayout>

</LinearLayout>

没有空间,你的EditTextButton都是match_parent,所以把其他东西都挤出去了。 - Ken Wolf
1
android:orientation="horizontal" 这是您的父布局属性。请将其更改为垂直。 - Brijesh Thakur
那你希望怎么样呢?我会给你可行的代码。 - Brijesh Thakur
如果您将第一个LinearLayout更改为垂直方向,但仍无法正常工作,请更新代码。 - Neoh
检查一下我的答案,它可能会有帮助。 - Vamsi Challa
显示剩余2条评论
5个回答

2

将第一个线性布局的方向更改为“垂直”。这样就可以正常工作了。


2
尝试这个,我认为你想要这种类型的用户界面。
<?xml version="1.0" encoding="utf-8"?>

<!-- Parent linear layout with vertical orientation -->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

 <LinearLayout 
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:orientation="horizontal" >

   <TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:padding="5dip"
     android:text="@string/app_name" />

   <EditText
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_gravity="top"
     android:layout_marginTop="0dp"
     android:ems="10" >

    <requestFocus />
   </EditText>

 </LinearLayout>

 <Button
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="290dp"
   />

 <!-- Child linear layout with horizontal orientation -->

 <LinearLayout
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#2a2a2a"
  android:orientation="horizontal" >

 <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
     android:text="Previous" android:padding="15dip" android:layout_weight="1"
     android:gravity="center"/>

 <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
     android:text="Next" android:padding="15dip" android:layout_weight="1"
     android:gravity="center"/>  

 </LinearLayout>

 </LinearLayout>

问题在于你希望将TextView和EditText放在同一行中,因此你将父LinearLayout设置为水平方向,但是由于这个原因,所有内容都被分开了。
因此,你需要将父布局方向设置为垂直,并在其中添加一个新的布局,用于EditText和TextView的水平分离。而这个新布局需要设置为水平方向。
以下是UI示例图: 以上代码所基于的UI

1

您的父布局显示了子布局,但是它超出了视图范围。将父布局的方向更改为垂直方向,它将变得可见。

进行以下更改...

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:baselineAligned="_baseline"
    android:orientation="vertical" >

为了让EditText与TextView在同一行显示,需要创建一个包含TextView和EditText的子布局,并将其方向设置为水平方向。这样它们就会在同一行显示。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:baselineAligned="_baseline"
    android:orientation="vertical" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:baselineAligned="_baseline"
    android:orientation="horizontal" >

  <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:padding="5dip"
      android:text="@string/name" />

  <EditText
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="top"
      android:layout_marginTop="0dp"
      android:ems="10" >

     <requestFocus />
  </EditText>
</LinearLayout>

...
...
</LinearLayout>

0

这是您发布问题时的描述,您在方向上犯了错误,在评论中写道:

<!--具有垂直方向的父线性布局-->

但在LinearLayout中,您设置了方向

android:orientation="horizontal"

将其更改为

android:orientation="vertical"

您的问题就解决了。


0

试试这个...

<?xml version="1.0" encoding="utf-8"?>
<!-- Parent linear layout with vertical orientation -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

  <LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:baselineAligned="_baseline"
    android:layout_weight="1"
    android:orientation="horizontal" >

  <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:padding="5dip"
      android:text="@string/name" />

  <EditText
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="top"
      android:layout_marginTop="0dp"
      android:ems="10" >

     <requestFocus />
  </EditText>

  <Button
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_marginTop="290dp"
      android:text="@string/submit" />
</LinearLayout>

  <!-- Child linear layout with horizontal orientation -->

  <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:background="#2a2a2a"
      android:layout_weight="1"
      android:baselineAligned="_baseline"
      android:orientation="horizontal" >

  <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
         android:text="Previous" android:padding="15dip" android:layout_weight="1"
         android:gravity="center"/>

  <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
         android:text="Next" android:padding="15dip" android:layout_weight="1"
         android:gravity="center"/>  

  </LinearLayout>

</LinearLayout>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接