[英]Adding multiple framelayout in a linearlayout programmatically
我需要將圖像視圖與textview重疊。 並且此組合視圖將在LinearLayout中重復100次。 我當時想在LinearLayout中使用FrameLayout,並在FrameLayout保持imageview和textview重疊時,在LinearLayout中重復FrameLayout 100次。 需要以編程方式而不是從xml文件執行此操作。
我先將圖像和textview添加到framelayout中,然后嘗試將framelayout添加到linearlayout中。 但它說:指定的孩子已經有一個父母..所以不工作。 你能給我看看代碼嗎? 謝謝你的幫助。
將會是這樣,但是需要以編程方式完成
---linear layout--------------
------------------------------
|frame layout----------------|
||txt view on top of img view|
------------------------------
frame layout will be repeated|
---/end of linear layout------
這也是分開的代碼:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
LinearLayout dynamicview = (LinearLayout) findViewById(R.id.main_layout);
FrameLayout barFrameLayout = new FrameLayout(this);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT,
Gravity.CENTER);
barFrameLayout.setLayoutParams(params);
LinearLayout.LayoutParams slparams1 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
for (int i = 65; i <= 75; i++) {
TextView catTV = new TextView(this);
catTV.setLayoutParams(slparams1);
catTV.setText("===" + Character.toString((char) i) + "===");
catTV.setTextSize(32);
ImageView iv = new ImageView(this);
iv.setImageResource(R.drawable.ic_launcher);
iv.setLayoutParams(slparams1);
barFrameLayout.addView(catTV);
barFrameLayout.addView(iv);
dynamicview.addView(barFrameLayout);
}
}
這是演示您要實現的代碼。 我使用了RelativeLayout
,它非常靈活,您可以相對於其他元素輕松地FrameLayout
元素。(如果需要更改為FrameLayout
,可以更改)。
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class ExampleLayout extends LinearLayout{
public ExampleLayout(Context context,AttributeSet attrs){
super(context,attrs);
for(int i =0; i< 100; i++){
RelativeLayout childLayout = new RelativeLayout(context);
ImageView img = new ImageView(context);
TextView text = new TextView(context);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
childLayout.addView(img, params);
params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
childLayout.addView(text, params);
LinearLayout.LayoutParams parentParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
this.addView(childLayout,parentParams);
}
}
}
然后,您可以使用ExampleLayout類將其添加到任何layout.xml文件中。
FrameLayout旨在遮擋屏幕上的某個區域以顯示單個項目
(來源: http : //developer.android.com/reference/android/widget/FrameLayout.html )。
無論如何,您必須創建新的不使用相同的FrameLayouts。
在執行操作時:
barFrameLayout.addView(catTV);
barFrameLayout.addView(iv);
dynamicview.addView(barFrameLayout);
您總是將這些新對象(catTV和iv)添加到FrameLayout的同一實例(barFrameLayout)。
我認為那不是您想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.