在android中以编程方式添加要查看的项目

时间:2010-11-08 21:32:23

标签: android

我试图找出如何在垂直对齐的LinearLayout中添加项目(来自xml drawable / workaround_item.xml)。

    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:layout_alignParentLeft="true"
        android:gravity="center_vertical">            
        <ImageView 
            android:id="@+id/home_image"
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true" />           
        <TextView
            android:id="@+id/home_team" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true" 
            android:gravity="center_horizontal"
            android:textStyle="bold"
            android:textSize="12sp"
            android:textColor="#fff"/>          
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:gravity="center_vertical"
        android:layout_centerHorizontal="true">
        <TextView 
            android:id="@+id/game_cship" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true" 
            android:gravity="center_horizontal|center_vertical"
            android:textStyle="bold"
            android:textSize="10sp"/>               
        <TextView 
            android:id="@+id/game_score" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true" 
            android:gravity="center_horizontal"
            android:textStyle="bold"
            android:textColor="#fff" android:textSize="24sp"/>          
        <TextView 
            android:id="@+id/game_date" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true" 
            android:gravity="center_horizontal"
            android:textStyle="bold"
            android:textSize="10sp"/>           
    </LinearLayout>

    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:gravity="center_vertical"
        android:layout_alignParentRight="true">                       
        <ImageView 
            android:id="@+id/away_image"
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true" />           
        <TextView 
            android:id="@+id/away_team" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:gravity="center_horizontal"
            android:textStyle="bold"
            android:textSize="12sp"
            android:textColor="#fff" />     
    </LinearLayout>

在开始时我试图使用ListView,但据我所知,在scrollview中使用listview存在一个错误。我这样做是因为我在视图上有更多的组件应该与列表视图一起滚动。所以我决定删除listview并实现一个简单的线性布局,我将在其他地方添加每个元素等等。

活动的布局如下(layout / workaround.xml),我想开始添加顶栏下面的元素。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"    
android:id="@+id/linearid" >

</LinearLayout>

这就是我的java代码:

public class DemoActivity3 extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.workaround);

    LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    LinearLayout ll = (LinearLayout) this.findViewById(R.id.linearid);

    for(int i = 1; i< 15; i++) {        
        View item = inflater.inflate(R.layout.workaround_item, null);
        TextView x = (TextView) item.findViewById(R.id.game_score);
        x.setText("Score" + i);
        TextView ht = (TextView) item.findViewById(R.id.home_team);
        ht.setText("HomeTeam" + i);
        TextView at = (TextView) item.findViewById(R.id.away_team);
        at.setText("AwayTeam"+i);
        ImageView hi = (ImageView) item.findViewById(R.id.home_image);
        hi.setImageResource(R.drawable.gremio);
        ImageView ai = (ImageView) item.findViewById(R.id.away_image);
        ai.setImageResource(R.drawable.goias);
        ll.addView(item,ViewGroup.LayoutParams.WRAP_CONTENT);
    }       

}

这就是我得到的结果:http://twitpic.com/3562yu

android允许我们这样做吗?如果是这样,Hoe可以添加元素并设置它们的值吗? (这种布局将是足球比赛的结果)。

非常感谢 Ť

3 个答案:

答案 0 :(得分:0)

您可以使用LayoutInflater创建xml布局文件的实例。

然后只需在LinearLayout上调用addView

答案 1 :(得分:0)

ScrollView中没有关于ListView的“错误”,这只是废话。

ListView中有一项功能允许您添加header / footer个视图,这些视图允许您在ListView的常规项目之上和之下放置任何内容。

答案 2 :(得分:0)

凯文说你最好使用带标题的列表视图。标题将与列表一起滚动。

但是,如果您以编程方式向布局添加视图,那么代码应该可以正常工作。尝试使用LayoutParam对象添加它们:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ll.addView(item, params);