使用多个视图以编程方式/动态方式创建 LinearLayout [英] Creating LinearLayout Programmatically/Dynamically with Multiple Views
问题描述
我有一个这样的层次结构:
I have a hierarchy that is like this:
- 线性布局(水平)
- 图像视图
- 线性布局(垂直)
- 文本视图
- 文本视图
- 文本视图
- 文本视图
我希望能够通过迭代添加上面的层次结构,只要有可以从数据库中获取的数据(使用 Parse)
I want to be able to add the hierarchy above through iteration as long as there is data that could be obtained from the database(using Parse)
我尝试将 ImageView 和 LinearLayout 放在父 LinearLayout 下,但它似乎不起作用.这是我在 MainActivity.Java 中的代码:
I have tried putting up the ImageView and LinearLayout under the parent LinearLayout but it doesn't seem to work. Here is my code in MainActivity.Java:
LinearLayout LL_Outer = (LinearLayout) findViewById(R.id.new_linearLayoutOuter); LL_Outer.setOrientation(LinearLayout.VERTICAL); // set orientation LL_Outer.setBackgroundColor(color.white); // set background // set Layout_Width and Layout_Height LinearLayout.LayoutParams layoutForOuter = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); LL_Outer.setLayoutParams(layoutForOuter); LinearLayout LL_Inner = (LinearLayout) findViewById(R.id.new_linearLayoutInner); LL_Inner.setOrientation(LinearLayout.HORIZONTAL); LL_Inner.setBackgroundColor(color.white); LinearLayout.LayoutParams layoutForInner = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); LL_Inner.setLayoutParams(layoutForInner); //LL_Outer.addView(LL_Inner); ImageView IV = (ImageView) findViewById(R.id.new_imageViewPP); //IV.getLayoutParams().height = 55; //IV.getLayoutParams().width = 55; LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); params.setMargins(14, 12, 0, 0); params.height = 55; params.weight = 55; IV.setBackgroundColor(color.black); IV.setLayoutParams(params); LL_Inner.addView(IV); LL_Outer.addView(LL_Inner);
我不知道我哪里出错了,因为我的代码没有提示任何错误.请帮忙.
I don't know where I went wrong as my code did not prompt any error. Please help.
我已经相应地编辑了方向,当我运行应用程序时,它停止工作.并在LogCat中提示错误指定的孩子已经有父母.您必须先在孩子的父母上调用removeView().
I have edited the Orientations accordingly and when I run the app, it stops working. And prompts an error in LogCat saying "The specified child already has a parent. You must call removeView() on the child's parent first.
这是我的 XML:
<LinearLayout android:id="@+id/new_linearLayoutOuter" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/white" android:orientation="horizontal" > <ImageView android:id="@+id/new_imageViewPP" android:layout_width="55dp" android:layout_height="55dp" android:layout_marginLeft="14dp" android:layout_marginTop="12dp" android:background="@color/black" android:contentDescription="@string/pp" /> <LinearLayout android:id="@+id/new_linearLayoutInner" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/white" android:orientation="vertical" > <TextView android:id="@+id/new_textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/movie_title" android:paddingTop="10dp" android:paddingLeft="7dp" android:textSize="15sp" /> <!-- Title of the movie --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/review_by" android:paddingTop="3dp" android:paddingLeft="7dp" android:textSize="12sp" /> <!-- By --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/movie_stars" android:paddingTop="3dp" android:paddingLeft="7dp" android:textSize="12sp" /> <!-- Rating and date --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/sample_string" android:maxLines="5" android:scrollbars="vertical" android:paddingTop="10dp" android:paddingLeft="7dp" android:textSize="12sp" android:layout_gravity="center_vertical|right" /> <!-- Review content --> </LinearLayout> </LinearLayout>
推荐答案
您希望以编程方式建立层次结构.
You want that hierarchy programmatically.
- 线性布局(水平)- 图像视图- 线性布局(垂直)- 文本视图- 文本视图- 文本视图- 文本视图
好的,让我们从父
LinearLayout
LinearLayout parent = new LinearLayout(context); parent.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); parent.setOrientation(LinearLayout.HORIZONTAL); //children of parent linearlayout ImageView iv = new ImageView(context); LinearLayout layout2 = new LinearLayout(context); layout2.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); layout2.setOrientation(LinearLayout.VERTICAL); parent.addView(iv); parent.addView(layout2); //children of layout2 LinearLayout TextView tv1 = new TextView(context); TextView tv2 = new TextView(context); TextView tv3 = new TextView(context); TextView tv4 = new TextView(context); layout2.addView(tv1); layout2.addView(tv2); layout2.addView(tv3); layout2.addView(tv4);
你完成了:)
这篇关于使用多个视图以编程方式/动态方式创建 LinearLayout的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!