如何解决“布局具有超过80个视图,不利于性能"? [英] how to resolve "Layout has more than 80 views, bad for performance"?
问题描述
我的布局有点复杂,只是无法解决LINT指示的错误(...黑莓手机的视图超过80个,对性能不利) 这是布局:
I'm doing a layout a bit complex, just that I can't fix the error that is indicated by LINT (...has blackberries than 80 views, bad for performance) This is the layout:
<?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,但应该怎么做?并非所有行都是相等的,或者在任何情况下,中间都有一些元素与其他所有行都不相等!
I read to use a ListView, but how should I to do? Not all the rows are equal, or in any case there are some elements in the middle which are not equal to all other rows!
图片:
推荐答案
这肯定是ListView
的理想候选者.正如我在评论中所述,您可以在Adapter
中使用自定义的layout
.我不知道您是如何获取数据的,所以我无法确切说明如何检查,但是在每一轮getView()
中,您都可以检查数据并确定要显示/隐藏的View
.
This definitely looks like a good candidate for a ListView
. As I stated in my comment, you can use a custom layout
in your Adapter
. I don't know how you are getting your data for it so I can't say exactly how to check but in each round of getView()
you can check the data and decide which View
s to show/hide.
只需创建layout
并添加TextView
等,每行可能看起来像是在垂直LinearLayout
的内部,水平LinearLayout
在其中,或者只是RelativeLayout
根据需要将visibility
更改为visible
/gone
.
Simply create the layout
with the TextView
s, etc... that each row might need, looks like probably inside of a vertical LinearLayout
with horizontal LinearLayout
s inside or just a RelativeLayout
then change visibility
to visible
/gone
depending on what you need.
If you are unfamiliar with doing this then you can see this tutorial on doing it.
如评论中所指出的,如果您的layouts
差异很大,则可以在Adapter
的getView()
方法中为不同的layout
充气,这可能会使切换visibility
成为一种不好的方法.这仅取决于您的数据和layout
.
As pointed out in a comment, you could inflate different layout
s in your getView()
method of your Adapter
if you have very different layouts
which may make toggling visibility
a bad approach. This just depends on your data and layout
s.
这篇关于如何解决“布局具有超过80个视图,不利于性能"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!