views:

265

answers:

2

I have a RelativeLayout at the top, then below i have a ListView in the center and finally at the bottom i have another relativeLayout with an EditText and a Button inside.

I want the ListView to resize when I click on the EditText and the IME(virtual keyboard) appears. If i put adjustResize in the manifest, the Listview is resized to leave space for the IME, but the RelativeLayout with the EditText that is below is covered by the IME and I can't see what I'm writing. If I put adjustPan, the keyboard pushs up all, the ListView is not resized and i loose the top RelativeLayout.

My Code:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/application_background"
    android:paddingLeft="15px"
    android:paddingRight="15px"
    android:paddingTop="15px"
    android:paddingBottom="15px">

    <RelativeLayout
        android:id="@+id/rlyParentPost"
        android:orientation="vertical"
        android:layout_width="450px"
        android:layout_height="85px"
        android:background="@drawable/app_gradient_color"
        android:layout_centerHorizontal="true">
        <ImageView
            android:id="@+id/imgUserOfParent"
            android:layout_marginLeft="10px"
            android:layout_marginTop="10px"
            android:background="@drawable/userfeed"
            android:layout_width="64px"
            android:layout_height="64px"
            android:layout_below="@+id/logoImg">
        </ImageView>
        <TextView
            android:layout_below="@+id/logoImg"
            android:layout_toRightOf="@+id/imgUserOfParent"
            android:id="@+id/lblNameOfParent"
            android:textSize="17px"
            android:textStyle="bold"
            android:layout_marginLeft="5dip"
            android:layout_marginTop="11dip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#ffffff">
        </TextView>
        <TextView
            android:layout_below="@+id/lblNameOfParent"
            android:layout_toRightOf="@+id/imgUserOfParent"
            android:id="@+id/lblBodyOfParent"
            android:textColor="#ffffff"
            android:textSize="17px"
            android:layout_marginLeft="5dip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </TextView>
        <TextView
            android:layout_below="@+id/lblBodyOfParent"
            android:layout_toRightOf="@+id/imgUserOfParent"
            android:id="@+id/lblDateOfParent"
            android:textColor="#70ccff"
            android:textSize="11px"
            android:layout_marginLeft="7dip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </TextView>
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/rlyParentPost"
        android:id="@+id/contentLayout">

     <ListView
       android:isScrollContainer="true"
         android:id="@+id/lsvComments"
         android:layout_height="515px"
         android:layout_width="450px"
         android:background="#ffffff"
         android:listSelector="@drawable/multi_white_color"
         android:drawSelectorOnTop="false"
         android:divider="#9aa5ac"
         android:cacheColorHint="#00000000"
         android:dividerHeight="1px">
     </ListView>

     <RelativeLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:padding="5dip"
         android:layout_below="@+id/lsvComments"
         android:background="@drawable/app_gradient_comments"
         android:id="@+id/contentLayout">
         <EditText
             android:inputType="text"
             android:id="@+id/txtComment"
             android:hint="What are you working on?" 
             android:textSize="22px"
             android:layout_marginLeft="8px"
             android:layout_height="72px"
             android:layout_width="344px">
         </EditText>
         <Button
             android:layout_toRightOf="@+id/txtComment"
             android:id="@+id/cmdShare"
             android:layout_width="79px"
             android:layout_height="65px"
             android:background="@drawable/feed_comments_multi_stage"
             android:layout_marginLeft="7px">
         </Button>
    </RelativeLayout> 
   </RelativeLayout>
</RelativeLayout>
A: 

You should not be setting your layout_width and layout_heights with explicit pixel values. Instead, use wrap_parent or fill_parent as appropriate.

If you want somethign like a text view to be a particular width, use dpi units which will adjust correctly on different screen resolutions.

Regarding your specific virtual keyboard problem, I would try setting up the ListView so it takes up the remaining space.

--Set the heights of everything except the ListView to wrap_parent --Set the ListView to fill_parent,

The ListView should take up however much space is available, and thus shrink when you ask it to resize.

Mayra
Thanks Mayra by the response, I tried do what you say.. I put all in wrap_content except the listview which i put in fill_parent. But when i start the activity i only saw the first layout in the top and the listview below which filled all the rest of the screen, but i lost the bottom layout with the EditText, so i couldn't even click the edittext to show the keyboard
Luciano
Your layout references are using "@+id". When you specify that something is below, next to, etc, something else, the view that you're setting it relative to has to come first. And you have to give it an ID that's already been declared using `android:layout_toRightOf="@id/txtComment"
Falmarri
It looks like you should be able to change your outer RelativeLayout to just be a LinearLayout with orientation="vertical". Also, a good tool for debugging layouts is the HeirarchyViewer, in the tools directory of the sdk. It will visualize how it thinks the layout is.
Mayra
A: 

Hi, I have a similar problem. I considered everything that Mayra said, but I could not find a solution. If anyone can help us!! Thanks.

Anita