2015-12-24 5 views
1

У меня есть ImageView, a TextView и еще один «ImageView», сгруппированный по вертикали LinearLayout.
TextView должен содержать длинный текст, поэтому я завернул его в ScrollView. Первый ImageView должен быть высотой 100dp и третьей высотой 100dp. Средний TextView должен заполнить все свободное пространство, и если текст слишком длинный, появится полоса прокрутки.
Весь макет является частью родительского макета, поэтому этот макет имеет только часть доступного экрана. Чтобы продемонстрировать это, я установил высоту LinearLayout равной 265dp.
Проблема заключается в том, что весь текст появляется, полоса прокрутки не отображается, а третья нижняя высота ImageView сжата.
Я следую за сообщением this, и это скриншот.ScrollView толкает под View и нет полосы прокрутки

enter image description here

Мой код:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="265dp" 
android:background="#BDBDBD" 
android:orientation="vertical"> 


<ImageView 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:background="#FFFF00" /> 


<ScrollView 
    android:id="@+id/SCROLLER_ID" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:scrollbars="vertical" 
    android:fillViewport="true"> 

    <TextView 
     android:id="@+id/TEXT_STATUS_ID" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1.0" 
     android:text="bla\nbla\nbla\nbla\nbla\nbla\nbla"/> 

</ScrollView> 


<ImageView 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:background="#FF00FF" /> 

</LinearLayout> 
+0

Ваша фиксированная высота лифта? – Mohit

+0

Поместите вид прокрутки в линейном макете –

+0

Увеличьте текст текста внутри вашего «TextView» и увидите. –

ответ

0

Попробуйте этот макет:

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

<ImageView 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:background="#FFFF00" /> 

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

    <TextView 
     android:id="@+id/TEXT_STATUS_ID" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="bla\nbla\nbla\nbla\nbla\nbla\nbla"/> 

</ScrollView> 

<ImageView 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:background="#FF00FF" /> 

</LinearLayout> 
0
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="265dp" 
    android:background="#BDBDBD" > 

    <ImageView 
     android:id="@+id/imgtop" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_alignParentTop="true" 
     android:background="#FFFF00" /> 

    <ImageView 
     android:id="@+id/imgbottom" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_alignParentBottom="true" 
     android:background="#FF00FF" /> 

    <ScrollView 
     android:id="@+id/SCROLLER_ID" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@id/imgbottom" 
     android:layout_below="@id/imgtop" 
     android:fillViewport="true" 
     android:scrollbars="vertical" > 

     <TextView 
      android:id="@+id/TEXT_STATUS_ID" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="bla\nbla\nbla\nbla\nbla\nbla\nbla" 
      android:textColor="@color/black" /> 
    </ScrollView> 

</RelativeLayout> 
0
<ScrollView 
android:id="@+id/SCROLLER_ID" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:scrollbars="vertical" 
android:fillViewport="true"> 

    <TextView 
    android:id="@+id/TEXT_STATUS_ID" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1.0" 
    android:text="bla\nbla\nbla\nbla\nbla\nbla\nbla"/> 

</ScrollView> 
  1. вес, который вы назначили на TextView не имеет никакого значения: он находится внутри ScrollView (который расширяет FrameLayout, а не LinearLayout), и даже если он имел значение, это не то, что вы ищете. Просто скажите, что он должен занимать большую часть пространства внутри ScrollView
  2. Вы дали ScrollViewheight из wrap_content - в вашем случае это означает, что он будет принимать полную высоту TextView - таким образом, если TextView высоты больше, чем высота экрана - это займет всю высоту экрана - таким образом, у вашего последнего TextView не хватит места.

Вы можете решить с помощью 3 (или более) методов

  1. Присвоить с фиксированной высотой до ScrollView
  2. Присвоить вес на ScrollView (а может быть, и к остальной части Views)
  3. Используйте Новый PercentRelativeLayout. просто назначьте процент высоты для ScrollView для захвата.