我在Android屏幕上动态创建一个布局,显示一个项目列表。 我知道我可以使用ListView和自定义适配器来执行此操作,但列表中的项目必须根据其数据以不同方式显示,并且我想知道是否可以按代码生成布局。
我尝试这种方式,但我只能在屏幕上看到最后一项......好像其他项目被最后一项压制。
这是我的屏幕代码:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fab="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="50dp">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginBottom="50dp">
<RelativeLayout
android:id="@+id/allItemsLoadingPanel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true" />
</RelativeLayout>
<LinearLayout
android:id="@+id/allItemsContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="10dip" />
</LinearLayout>
<com.refractored.fab.FloatingActionButton
android:id="@+id/allItemsFab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_marginTop="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="66dp"
android:src="@drawable/ic_action_add"
android:visibility="gone"
fab:fab_size="normal"
fab:fab_colorNormal="@color/appColorPrimary"
fab:fab_colorPressed="@color/appColorPrimaryPressed"
fab:fab_colorRipple="@color/appColorPrimaryPressed" />
</FrameLayout>
这里是我膨胀并添加到LynearLayout的单个项目的布局,名为&#34; allItemsContainer&#34;:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp">
<TextView
android:id="@+id/allItemsIteTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:gravity="center_vertical"
android:textStyle="bold"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/allItemsIteUsername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:layout_below="@+id/allItemsIteUsername"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:paddingRight="10dp" />
<TextView
android:id="@+id/allItemsIteText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:layout_below="@+id/allItemsIteTitle"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:paddingRight="10dp" />
<RatingBar android:id="@+id/allItemsIteRatingbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:stepSize="0.1"
android:layout_below="@+id/allItemsIteText"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:scaleX="0.5"
android:scaleY="0.5"
android:layout_marginRight="-50dp"/>
<RelativeLayout
android:id="@+id/allItemsComments"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
在我的循环结束时,我已经向lynearLayout添加了一些项目,但我只能看到一个... 你能救我吗?
答案 0 :(得分:0)
是的,您可以从代码生成布局 您可以在布局中定义LinearLayout。使用.addView(view)
将视图添加到linearlayout前:
TextView textView = new TextView(this)
linearLayout.addView(textView);
答案 1 :(得分:0)
伙计们我解决了这个问题:我的所有代码都是正确的但在我的情况下,我要添加一个ScrollView作为我的&#34; allItemsContainer&#34;的母版。 LinearLayout中。现在一切正常。 现在这是我的屏幕代码:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fab="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="50dp">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginBottom="50dp">
<RelativeLayout
android:id="@+id/allItemsLoadingPanel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true" />
</RelativeLayout>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/allItemsContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="10dip" />
</ScrollView>
</LinearLayout>
<com.refractored.fab.FloatingActionButton
android:id="@+id/allItemsFab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_marginTop="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="66dp"
android:src="@drawable/ic_action_add"
android:visibility="gone"
fab:fab_size="normal"
fab:fab_colorNormal="@color/appColorPrimary"
fab:fab_colorPressed="@color/appColorPrimaryPressed"
fab:fab_colorRipple="@color/appColorPrimaryPressed" />
</FrameLayout>