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

时间:2014-01-20 19:27:29

标签: android xml android-layout android-xml

我需要根据屏幕的大小调整内容,例如HTML可以使用porcetage。我展示了我的代码和我需要做的事情

enter image description here

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

包含2个LinearLayout(the_name,precio_happy)的LinearLayout,一个用于名称,另一个用于价格以及一些装饰性的图片,其中“the_name”的大小为60%来调整名称和obimante价格是40%,我该怎么做?

5 个答案:

答案 0 :(得分:2)

设置您想要相对于0dp的宽度或高度,然后使用layout_weight设置百分比。

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

更多详情here

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我们可以使用java api来实现screen的布局。这样我们就可以动态地开发UI了。

另外,根据设备尺寸调整我们的UI百分比,我们可以使用Android的Display类,它在运行时为我们提供屏幕宽度和高度。

答案 3 :(得分:0)

使用此方法,它会重新排列您传递的百分比视图。

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);
    }

答案 4 :(得分:0)

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