开发者

How to prevent other View being pushed out of the screen

this is the example XML

<?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>

The result is like this :

How to prevent other View being pushed out of the screen

If you notice, the text in upper LinerLayout are wrapped in LinearLayout and ScrollView.

If the upper content keep added, it will look like this

How to prevent other View being pushed out of the screen

Bottom Linearlayout will be pushed out of the screen before the ScrollView become active and make the first content become scrollable.... And I don't want that to be happened...

What should I do to make the Scrollview before the bottom View being pushed out of the screen like this :

(this is edited image and not created by Android Layout editor)

How to prevent other View being pushed out of the screen

Hope the question clear enough.. Thanks :)


It took me an insane amount of time to figure this out, there is no info on the net, but I finally got it. Enjoy!

<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>


Try this. The key is using layout_weight within the linear layout.

<?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>


Well, if I understand you question clearly, you want the TextView in grey to remain stationary, while the textViews in red can be scrolled around, correct me if I'm wrong here. If thats what you want, then you can use RelativeLayout to achieve that. Following is the code to produce an output like:
http://imageshack.us/photo/my-images/836/device20111011012652.png/
The ListView entries are scrollable while the button(in your case it should be a TextView) stays where it is.

Code:

<?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>  

Just change the bottom button to a TextView and it would match what you wanted.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜