看起来,在相对布局中使用layout_weight(需要膨胀ListView)在低cpu手机中是相当沉重的。
我如何优化这个布局?
在每个小部件上指定最小宽度和高度有多重要?
<?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"
android:minWidth="25px"
android:minHeight="25px">
<LinearLayout
android:orientation="horizontal"
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/LLHFila"
android:padding="8dp">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cmdReducir"
android:layout_weight="0.25"
android:background="@null"
android:src="@drawable/minus50px"
android:paddingLeft="10dp"
android:paddingRight="10dp" />
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/LLVProducto"
android:layout_weight="3">
<TextView
android:text="Long Description Title"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lblProducto" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/LLHmontos">
<TextView
android:text="Amount"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lblCantidad"
android:layout_weight="1" />
<TextView
android:text="Price"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lblImporte"
android:textStyle="bold"
android:gravity="right"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cmdAumentar"
android:layout_weight="0.25"
android:background="@null"
android:src="@drawable/plus50px"
android:paddingLeft="10dp"
android:paddingRight="10dp" />
</LinearLayout>
这基本上消除了所有嵌套。正如@Onik建议的那样,在RelativeLayout中使用重量是没有意义的。
<?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"
android:padding="10dp">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cmdReducir"
android:layout_weight="0.25"
android:background="@null"
android:src="@drawable/minus50px"
android:layout_alignParentLeft="true" />
<TextView
android:text="Long Description Title"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:id="@+id/lblProducto"
android:layout_toRightOf="@+id/cmdReducir"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:layout_toLeftOf="@+id/cmdAumentar"
android:paddingLeft="5dp"
android:paddingRight="5dp" />
<TextView
android:text="Amount"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lblCantidad"
android:layout_below="@+id/lblProducto"
android:layout_toRightOf="@+id/cmdReducir"
android:paddingLeft="5dp" />
<TextView
android:text="Price"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lblImporte"
android:textStyle="bold"
android:layout_below="@+id/lblProducto"
android:layout_toLeftOf="@+id/cmdAumentar"
android:paddingRight="5dp" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cmdAumentar"
android:layout_weight="0.25"
android:background="@null"
android:src="@drawable/plus50px"
android:layout_alignParentRight="true" />
android引入了一个百分比支持库
希望这对你有帮助,因为这是非常有趣的,每个人都喜欢这个!
在这里你可以定义一个视图的宽度或高度的百分比。它有两个预先构建的布局- PercentRelativeLayout
和PercentFrameLayout
。
使用:在构建中添加依赖项。Gradle of app
compile 'com.android.support:percent:22.2.0'
和XML中的
<android.support.percent.PercentRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:text="Button"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
app:layout_widthPercent="30%"/>
<Button
android:id="@+id/button2"
android:text="Button 2"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/button"
app:layout_widthPercent="60%"/>
<Button
android:id="@+id/button3"
android:text="Button 3"
android:layout_height="wrap_content"
android:layout_below="@+id/button"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
app:layout_widthPercent="90%"/>
</android.support.percent.PercentRelativeLayout>
这段代码取自LINK