how to set height of relative layout dynamically i

2020-03-21 05:27发布

问题:

This is working fine on emulator but not on the devices because I have hard coded the height to 365. Can anyone help me in this regard?

<?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">
<TabHost android:id="@+id/tab_host"
    android:layout_width="fill_parent" android:layout_height="fill_parent">
    <TabWidget android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:id="@android:id/tabs"
        android:layout_gravity="bottom"/>
        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_width="fill_parent" android:layout_height="fill_parent">
            <RelativeLayout android:id="@+id/first_tab"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="365px">
                <WebView xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/webview"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"/>
                    <ImageView
                        android:id="@+id/widget31"
                        android:layout_width="fill_parent"
                        android:layout_height="49px"
                        android:layout_x="0px"
                        android:layout_y="0px"
                        android:background="#39000000"
                        android:layout_alignParentBottom="true">
                    </ImageView>
                    <ImageButton
                        android:id="@+id/btnFB"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/fb"
                        android:background="#00000000"
                        android:layout_alignRight="@+id/widget31"
                        android:layout_alignParentBottom="true">
                    </ImageButton>
                    <TextView   
                        android:id="@+id/myTextView1"   
                        android:layout_height="wrap_content"   
                        android:layout_width="wrap_content"   
                        android:text="Share"
                        android:textColor="#111111"
                        android:textSize="14pt"
                        android:paddingBottom="5px"
                        android:layout_alignLeft="@+id/widget31"
                        android:layout_alignParentBottom="true"/> 
                        <ImageButton
                            android:id="@+id/btnTwitter"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:src="@drawable/twitter"
                            android:visibility="invisible"
                            android:background="#00000000"
                            android:layout_alignRight="@+id/widget31"
                            android:layout_alignParentBottom="true">
                        </ImageButton>
            <!-- Replace TextView with your layout content for this tab -->
            </RelativeLayout>
            <LinearLayout android:id="@+id/second_tab"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="fill_parent">
                <ScrollView   
                    android:id="@+id/ScrollView01"  
                    android:layout_height="365px"   
                    android:layout_width="fill_parent">  
                    <WebView xmlns:android="http://schemas.android.com/apk/res/android"
                        android:id="@+id/webviewForRSS"
                        android:layout_width="fill_parent"
                        android:layout_height="365px"
                        android:background="#98012E"/>
                </ScrollView>
            <!-- Replace TextView with your layout content for this tab -->
            </LinearLayout>
            <LinearLayout android:id="@+id/edit_item_text_tab"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="fill_parent"/>
            </FrameLayout>
    </TabHost>
</RelativeLayout>

Thanks.

回答1:

You can change the layout height dynamically through different ways-----

First,

getLayoutParams().height= x;
requestLayout(); or invalidate(); 

Secondly,

 first_tab.setHeight(int pixels);

Try using anyone of the way.......



回答2:

You should not use px, use dp instead.

android:layout_height="365dp"

Have a read here, to know Density independent pixel(dp) better.

Using dp units to define your application's UI is highly recommended, as a way of ensuring proper display of your UI on different screens.