android-如何解决“布局有80多个视图,对性能不利”?
作者:互联网
我的布局有点复杂,只是无法解决LINT指示的错误(…黑莓手机的视图超过80个,对性能不利)
这是布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
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=".Activity_schedapunti">
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:gravity="center_horizontal"
android:text="@string/esame_visivo"
android:textColor="@android:color/white"
android:textStyle="bold"
android:background="@android:color/black"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".3"
android:gravity="center_horizontal"
android:text="@string/punteggio_parziale"
android:textColor="@android:color/white"
android:textStyle="bold"
android:background="@android:color/black"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_aspetto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/aspetto"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/coeff_x1"
android:textStyle="bold"
android:textColor="@color/light_yellow"/>
<EditText
android:id="@+id/edittext_aspetto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:inputType="number"
android:singleLine="true" />
</LinearLayout>
<TextView
android:id="@+id/textview_puteggio_parziale_aspetto"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight=".3"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_punti_colore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/colore"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/coeff_x2"
android:textStyle="bold"
android:textColor="@color/light_yellow"/>
<EditText
android:id="@+id/edittext_punti_colore"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:inputType="number"
android:singleLine="true" />
</LinearLayout>
<TextView
android:id="@+id/textview_puteggio_parziale_colore"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight=".3"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:gravity="center_horizontal"
android:text="@string/esame_olfattivo"
android:textColor="@android:color/white"
android:textStyle="bold"
android:background="@android:color/black"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".3"
android:gravity="center_horizontal"
android:text="@string/punteggio_parziale"
android:textColor="@android:color/white"
android:textStyle="bold"
android:background="@android:color/black"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_punti_intensita"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/intensita"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/coeff_x1"
android:textStyle="bold"
android:textColor="@color/light_yellow"/>
<EditText
android:id="@+id/edittext_punti_intensita"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:inputType="number"
android:singleLine="true" />
</LinearLayout>
<TextView
android:id="@+id/textview_puteggio_parziale_intensita"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight=".3"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_punti_complessita"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/complessita"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/coeff_x2"
android:textStyle="bold"
android:textColor="@color/light_yellow"/>
<EditText
android:id="@+id/edittext_punti_complessita"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:inputType="number"
android:singleLine="true" />
</LinearLayout>
<TextView
android:id="@+id/textview_puteggio_parziale_complessita"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight=".3"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_punti_qualita"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/qualita"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/coeff_x3"
android:textStyle="bold"
android:textColor="@color/light_yellow"/>
<EditText
android:id="@+id/edittext_punti_qualita"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:inputType="number"
android:singleLine="true" />
</LinearLayout>
<TextView
android:id="@+id/textview_puteggio_parziale_qualita"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight=".3"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:gravity="center_horizontal"
android:text="@string/esame_gusto_olfattivo"
android:textColor="@android:color/white"
android:textStyle="bold"
android:background="@android:color/black"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".3"
android:gravity="center_horizontal"
android:text="@string/punteggio_parziale"
android:textColor="@android:color/white"
android:textStyle="bold"
android:background="@android:color/black"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_punti_struttura"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/struttura"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/coeff_x1"
android:textStyle="bold"
android:textColor="@color/light_yellow"/>
<EditText
android:id="@+id/edittext_punti_struttura"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:inputType="number"
android:singleLine="true" />
</LinearLayout>
<TextView
android:id="@+id/textview_puteggio_parziale_struttura"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight=".3"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_punti_equilibrio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/equilibrio"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/coeff_x1"
android:textStyle="bold"
android:textColor="@color/light_yellow"/>
<EditText
android:id="@+id/edittext_punti_equilibrio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:inputType="number"
android:singleLine="true" />
</LinearLayout>
<TextView
android:id="@+id/textview_puteggio_parziale_equilibrio"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight=".3"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_punti_intensita_gusto_olfattivo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/intensita"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/coeff_x1"
android:textStyle="bold"
android:textColor="@color/light_yellow"/>
<EditText
android:id="@+id/edittext_punti_intensita_gusto_olfattivo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:inputType="number"
android:singleLine="true" />
</LinearLayout>
<TextView
android:id="@+id/textview_puteggio_parziale_intensita_gusto_olfattivo"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight=".3"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_punti_persistenza"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/persistenza"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/coeff_x2"
android:textStyle="bold"
android:textColor="@color/light_yellow"/>
<EditText
android:id="@+id/edittext_punti_persistenza"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:inputType="number"
android:singleLine="true" />
</LinearLayout>
<TextView
android:id="@+id/textview_puteggio_parziale_persistenza"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight=".3"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_punti_qualita_gusto_olfattivo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/qualita"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/coeff_x3"
android:textStyle="bold"
android:textColor="@color/light_yellow"/>
<EditText
android:id="@+id/edittext_punti_qualita_gusto_olfattivo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:inputType="number"
android:singleLine="true" />
</LinearLayout>
<TextView
android:id="@+id/textview_puteggio_parziale_qualita_gusto_olfattivo"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight=".3"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_punti_armonia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/armonia"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/coeff_x3"
android:textStyle="bold"
android:textColor="@color/light_yellow"/>
<EditText
android:id="@+id/edittext_punti_armonia"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:inputType="number"
android:singleLine="true" />
</LinearLayout>
<TextView
android:id="@+id/textview_puteggio_parziale_armonia"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight=".3"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:gravity="center_horizontal"
android:text="@string/punteggio_totale"
android:textColor="@android:color/white"
android:textStyle="bold"
android:background="@android:color/black"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".3"
android:gravity="center_horizontal"
android:textColor="@color/light_yellow"
android:textStyle="bold"
android:background="@android:color/black"/>
</TableRow>
</TableLayout>
</ScrollView>
我读过使用ListView,但是应该怎么做?并非所有行都是相等的,或者在任何情况下,中间都有一些元素与其他所有行都不相等!
图片:
解决方法:
这绝对看起来像是ListView的不错的选择.如我在评论中所述,您可以在适配器中使用自定义布局.我不知道您是如何获取数据的,所以我无法确切说明如何检查,但是在每轮getView()中,您都可以检查数据并确定要显示/隐藏的视图.
只需使用每行可能需要的TextViews等来创建布局,看起来可能像是在内部带有水平LinearLayouts的垂直LinearLayout内部,或者只是一个RelativeLayout,然后根据需要将可见性更改为visible / gone.
如果您不熟悉此操作,则可以看到this tutorial.
如注释中所指出的,如果布局非常不同,则可以在Adapter的getView()方法中膨胀不同的布局,这可能会使切换可见性成为一种不好的方法.这仅取决于您的数据和布局.
标签:tablerow,performance,android-layout,android 来源: https://codeday.me/bug/20191122/2059796.html