2011-10-10 9 views
9

to przykład XMLJak zapobiegać innych Zobacz pchanych z ekranu

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout android:layout_width="match_parent" 
     android:layout_height="wrap_content" android:orientation="vertical" 
     android:layout_margin="5dip" android:background="#FF992222"> 
     <ScrollView android:layout_height="wrap_content" 
      android:layout_width="fill_parent"> 
      <LinearLayout android:layout_height="wrap_content" 
       android:orientation="vertical" android:layout_width="fill_parent"> 
       <TextView android:layout_width="wrap_content" android:text="TextView" 
        android:layout_height="wrap_content" android:textSize="24dip"></TextView> 
      </LinearLayout> 
     </ScrollView> 
    </LinearLayout> 
    <LinearLayout android:layout_width="match_parent" 
     android:layout_height="wrap_content" android:orientation="vertical" 
     android:layout_margin="5dip" android:background="#FF555555"> 
     <TextView android:layout_width="wrap_content" android:text="TextView" 
      android:layout_height="wrap_content" android:textSize="24dip"></TextView> 
    </LinearLayout> 
</LinearLayout> 

Rezultatem jest tak:

enter image description here

Jeśli zauważysz, tekst w górnej LinerLayout są zapakowane w LinearLayout i ScrollView.

Jeżeli górna zawartość ciągle dodawane, to będzie wyglądać tak

enter image description here

Dolny Linearlayout zostanie wypchnięty z ekranu przed Scrollview stają się aktywne i sprawiają, że stają się najpierw zawartość przewijania .... a ja nie chcę, żeby się stało ...

Co należy zrobić, aby Scrollview przed dno Zobacz pchanych z ekranu jak poniżej:

(jest edytowany obraz a nie stworzony przez Android Edytor)

enter image description here

nadzieję, że pytanie jest wystarczająco jasna .. Dzięki :)

+0

Dlaczego nie trzymać wszystko wewnątrz Scrollview. –

+0

, więc nie chcesz, aby szary tekst poruszał się w ogóle, a czerwone pozostały przewijane, czy to prawda? – Urban

Odpowiedz

3

Cóż, jeśli dobrze rozumiem, że pytanie wyraźnie, chcesz TextView w szary pozostają nieruchome, natomiast TextView na czerwono można przewijać wokół mnie poprawić jeśli się mylę tutaj. Jeśli to jest to, czego chcesz, możesz użyć RelativeLayout, aby to osiągnąć. Poniżej przedstawiono kod wyjściowy w postaci:
http://imageshack.us/photo/my-images/836/device20111011012652.png/
Pozycje ListView można przewijać, natomiast przycisk (w Twoim przypadku powinien to być TextView) pozostaje w miejscu, w którym się znajduje.

Kod:

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

<ListView android:id="@android:id/list" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_above="@+id/newtask" android:layout_alignParentTop="true"> 
</ListView> 

<Button android:layout_width="fill_parent" 
android:id="@+id/newtask" 
android:layout_height="wrap_content" 
android:text="Add New Task" android:layout_alignParentBottom="true"> 
</Button> 
</RelativeLayout> 

Wystarczy zmienić przycisk dolny do TextView i byłoby dopasować to, co chciał.

+0

Wow świetnie .... To nie jest odpowiedź, którą chcę ... Ale to naprawdę daje mi pojęcie jak może zrobić RelativeLayout ...:) W twoim xml, kiedy 'android: layout_alignParentBottom =" true "' jest wywoływane, relatywne wyjście staje się fill_parent, a ja nie chcę. Zamiast tego pozbywam się tego i dodam "android: layout_below =" @ + id/box1' do dolnego pola, aby było jak chcę ... :) –

+0

o nie ... to nie rozwiązuje mojego problemu .... Chcę to osiągnąć ... Chcę, aby pierwsze pudełko stało się elastyczne ... więc gdy pierwsze pudełko będzie zawierało tylko 1/2 linii, będzie wyglądać jak pierwsze zdjęcie, a gdy zawartość będzie zbyt duża, będzie wyglądać jak 3. pic ... –

+1

ok może to trochę zaimplementować, ale jeśli korzystasz z ListViews (którego najlepiej użyć w twoim przypadku), możesz przesłonić odbiornik onScroll i sprawdzić, czy ostatni wpis na liście jest Jeśli jest widoczny, będziesz musiał programowo ustawić wyrównanie szarego TextView na dole ostatniego elementu, inaczej ustaw wyrównanie na dole ekranu (jak pokazano w odpowiedzi). listy: http://stackoverflow.com/questions/5123675/find-out-if-listview-is-scrolled-to-the-bottom – Urban

4

spróbować. Kluczem jest użycie layout_weight w układzie liniowym.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ScrollView android:layout_height="0dp" 
     android:layout_weight="1" 
     android:layout_width="fill_parent"> 
     .... 
    </ScrollView> 
    <TextView android:layout_width="fill_parent" android:text="TextView" 
     android:layout_height="wrap_content" android:textSize="24dip"/> 
</LinearLayout> 
+0

Wiem, że mogę osiągnąć ostatni screenshoot z layout_weight. Ale chcę, aby pierwsze pudełko stało się elastyczne ... będzie małe, jeśli zawartość będzie zawierała tylko 1/2 linię i będzie można przewijać, gdy zawartość będzie zbyt duża ... –

+0

Pierwsze pole będzie elastyczne, jeśli zmienisz 'android: layout_height = "fill_parent" 'to" android: layout_height = "wrap_content" 'w pierwszym LinearLayout. Myślę. –

+0

Pracował dla mnie .. Dzięki –

7

Zajęło mi szaloną ilość czasu, aby to zrozumieć, nie ma informacji w sieci, ale w końcu to dostałem. Cieszyć się!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/mainlayout" 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
android:layout_gravity="center_vertical" 
android:orientation="vertical" 
> 

<LinearLayout 
    android:id="@+id/LL" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical"     
    android:gravity="center_vertical" 
    android:layout_centerVertical="true" 
    android:orientation="vertical" 
    android:weightSum="1" > 


    <ScrollView 
     android:id="@+id/scrollView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/TV1" 
     android:layout_margin="5dp" 
     android:layout_weight="1" 
     android:fillViewport="true" > 

     <TextView 
      android:id="@+id/TV2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" /> 
    </ScrollView> 

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginTop="5dp" 
     android:layout_weight="0" 
     android:orientation="horizontal" > 

     <TextView android:layout_width="wrap_content" android:text="TextView" 
     android:layout_height="wrap_content" android:textSize="24dip"></TextView> 

    </LinearLayout> 
</LinearLayout> 

+1

To powinna być zaakceptowana odpowiedź, ponieważ działa. –

Powiązane problemy