2016-11-23 92 views
-2

我有两个线性布局,每个都占据了总空间的50%。 里面有不同的意见,我不明白为什么horizontalScrollView1listView1(看ID)不可见。 这两个视图应该扩展以填充其父项中剩余的空间。 我做错了什么?为什么android layout_weight不能按预期工作?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <LinearLayout   
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:layout_width="match_parent"> 
     <HorizontalScrollView 
     android:id="@+id/header" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
     <HorizontalScrollView 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:layout_width="match_parent" 
     android:id="@+id/horizontalScrollView1"> 
     <ListView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/list"/> 
     </HorizontalScrollView> 
    </LinearLayout> 
    <LinearLayout   
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:layout_width="match_parent" > 
     <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Hello!!!" /> 
     <ListView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:id="@+id/listView1"/> 
    </LinearLayout> 
</LinearLayout> 
+0

您忘记为两个具有权重总和的父线性布局添加方向类型[android:orientation =“vertical”],请检查readyandroid答案以获得更多说明。 –

回答

3

你忘了把android:orientation="vertical"到的主要LinearLayoutLinearLayout。这样LinearLayout的孩子被放置在垂直方向,并将可见。

0

您正在为您的元素使用match_parent,所以当其中一个占据全宽时,另一个没有绘制位置。将您的内部元素宽度设置为wrap_content。如果你不做重量的话,那么LinearLayout的方向不起作用。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <LinearLayout   
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:layout_width="match_parent" 
     android:orientation="vertical"> 
     <HorizontalScrollView 
     android:id="@+id/header" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
     <HorizontalScrollView 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:layout_width="wrap_content" 
     android:id="@+id/horizontalScrollView1"> 
     <ListView 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:id="@+id/list"/> 
     </HorizontalScrollView> 
    </LinearLayout> 
    <LinearLayout   
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:layout_width="match_parent" 
     android:orientation="vertical"> 
     <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Hello!!!" /> 
     <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:id="@+id/listView1"/> 
    </LinearLayout> 
</LinearLayout> 
0

检查了这一点,我已经着色了所需的区块也区分。

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 
     <LinearLayout 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:orientation="horizontal" 
      android:background="@color/accent" 
      android:layout_width="match_parent"> 
      <HorizontalScrollView 
       android:id="@+id/header" 
       android:background="@color/primary" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1"/> 
      <HorizontalScrollView 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:layout_width="match_parent" 
       android:background="@color/black" 
       android:id="@+id/horizontalScrollView1"> 
       <ListView 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:id="@+id/list"/> 
      </HorizontalScrollView> 
     </LinearLayout> 
     <LinearLayout 
      android:orientation="horizontal" 
      android:background="@color/green" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:layout_width="match_parent" > 
      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="Hello!!!" /> 
      <ListView 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1" 
       android:id="@+id/listView1"/> 
     </LinearLayout> 
    </LinearLayout> 

基本上你已经忘记了在一些地方增加的方向=垂直,加上需要指定的android:layout_weight =“1”为您都Horizo​​ntalScrollView。

0

发生这种情况是因为您没有提及@ + id /标题水平滚动视图的权重。所以它正在采取它的父线性布局的全部高度。你忘了为两个父线性布局添加方向类型。

您可以通过此xml布局进行检查。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:orientation="vertical"> 

     <HorizontalScrollView 
      android:id="@+id/header" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" /> 

     <HorizontalScrollView 
      android:id="@+id/horizontalScrollView1" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1"> 

      <ListView 
       android:id="@+id/list" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" /> 
     </HorizontalScrollView> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Hello!!!" /> 

     <ListView 
      android:id="@+id/listView1" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" /> 
    </LinearLayout> 
</LinearLayout>