Android 如何将布局(LinearLayout、RelativeLayout等)的大小设置为百分比?

Android 如何将布局(LinearLayout、RelativeLayout等)的大小设置为百分比?,android,xml,android-layout,android-xml,Android,Xml,Android Layout,Android Xml,我需要根据屏幕的大小调整内容,比如HTML,它可以在页面上使用。我展示了我的代码和我需要做的事情 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_happyhour_item" android:layout_width="match_parent" android:layout_height="wrap_content" android:back

我需要根据屏幕的大小调整内容,比如HTML,它可以在页面上使用。我展示了我的代码和我需要做的事情

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_happyhour_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#363636"
android:orientation="vertical"
android:padding="10dip" >  
<LinearLayout
    android:id="@+id/top"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="12dip" 
    android:orientation="horizontal">    
<LinearLayout
    android:id="@+id/el_nombre" 
    android:layout_width="170dip"
    android:layout_height="30dip">
            <TextView
                android:id="@+id/nombre_happyhour"
                android:layout_width="170dip"
                android:layout_height="wrap_content"
                android:text=" "
                android:textColor="#ffffff" 
                android:textSize="19sp"
                android:tag="bold"
               />    
</LinearLayout>
<LinearLayout
    android:id="@+id/precios_happy" 
    android:layout_width="wrap_content"
    android:layout_height="30dip">              
    <ImageView
        android:id="@+id/vertical1"
        android:layout_width="wrap_content"
        android:layout_height="25dip"
        android:src="@drawable/vertical"
        />
    <TextView
        android:id="@+id/precio_happyhour"
        android:layout_width="75dp"
        android:layout_height="wrap_content"
        android:text=""
        android:textColor="#ffffff"
        android:textSize="19sp"
        android:paddingLeft="5dip"
        android:paddingRight="5dip" />
    <ImageView
        android:id="@+id/vertical2"
        android:layout_width="wrap_content"
        android:layout_height="25dip"
        android:src="@drawable/vertical" 
        />
    <ImageView
        android:id="@+id/hp"
        android:layout_width="24dip"
        android:layout_height="24dip"
        android:scaleType="centerInside"
        android:src="@drawable/happy" 
        android:paddingLeft="2dip"/>
    </LinearLayout>
</LinearLayout>
<LinearLayout
    android:id="@+id/bot" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"  >
    <LinearLayout
        android:id="@+id/descripcion"
        android:layout_width="300dip"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    <TextView
        android:id="@+id/la_descripcion"
        android:layout_width="250dip"
        android:layout_height="wrap_content"
        android:text="" 
        android:textColor="#ffffff" 
        android:textSize="12sp"
        android:paddingLeft="12dp"
        android:paddingRight="50dip"/>
    <ImageView
        android:id="@+id/img_tag"
        android:layout_width="5.84mm"
        android:layout_height="4.21mm"
        android:scaleType="centerInside"
        android:layout_gravity="bottom"
        android:background="@drawable/agotado"
        android:paddingLeft="30sp" 
        />      
    </LinearLayout>   
</LinearLayout>
<ImageView 
    android:layout_width="290dip"
    android:layout_height="10dip"
    android:src="@drawable/divierblanco"
    android:paddingLeft="10dip"/>



LinearLayout包含两个LinearLayout(The_name,precio_happy),一个用于名称,另一个用于价格以及一些装饰性图片。这是因为“The_name”的大小大约为60%以调整名称,而Obimant的价格为40%,我如何做到这一点?

你应该使用android:weight。将容器设置为weightsum=100,然后您可以相对地设置大小。

我们可以使用java api实现屏幕布局。这样我们就可以动态地开发UI


另外,为了根据设备尺寸调整用户界面的百分比,我们可以使用android的显示类,它在运行时为我们提供屏幕宽度和高度。

使用此方法,它将根据通过的百分比重新排列视图

setHeightInPercent(this, lvFavouriteCountries, 0.23f);

public static void setHeightInPercent(Context context, View view,
            float percentage) {
        WindowManager windowManager = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        Display display = windowManager.getDefaultDisplay();
        @SuppressWarnings("deprecation")
        int height = display.getHeight();

        int heightForView = (int) (height * percentage);
        LayoutParams layoutParmas = view.getLayoutParams();
        layoutParmas.height = heightForView;

        view.setLayoutParams(layoutParmas);
    }

设置要相对于0dp的宽度或高度,然后使用布局权重设置百分比

<LinearLayout
android:layout_width="match_parent" 
android:layout_height="wrap_content">

    <Button
        android:text="left" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight=".70" /> 

    <Button
        android:text="right" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight=".30" />

</LinearLayout>


更多细节

根据多屏幕的官方指南,线性布局和重量的使用不被视为最佳实践