Android 将TextView添加到AsyncTask内的RelativeLayout无效
我正在向RelativeLayout添加一些文本视图。我延长了你的时间。我可以在构造函数定义中添加TextView。我可以看到viw上的项目。但同样的代码,当我在AyncTask的onPostExecute中使用或使用post()方法时,TextView不会添加到布局中。两地执行相同的coe。我刚更改了上边距 这是我的密码Android 将TextView添加到AsyncTask内的RelativeLayout无效,android,textview,android-relativelayout,Android,Textview,Android Relativelayout,我正在向RelativeLayout添加一些文本视图。我延长了你的时间。我可以在构造函数定义中添加TextView。我可以看到viw上的项目。但同样的代码,当我在AyncTask的onPostExecute中使用或使用post()方法时,TextView不会添加到布局中。两地执行相同的coe。我刚更改了上边距 这是我的密码 TextView tv = new TextView(context); addView(tv); tv.setHeight(49); tv.s
TextView tv = new TextView(context);
addView(tv);
tv.setHeight(49);
tv.setWidth(100);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.leftMargin = (int) 0;
params.topMargin = (int) 600;
tv.setLayoutParams(params);
======================实施================================
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
DateDetailsScrollView sc = new DateDetailsScrollView(container.getContext());
new SyncInThread().execute(sc);
return sc;
}
private static class SyncInThread extends AsyncTask<Object, Void, String> {
private ArrayList<EVT> _mEvents = new ArrayList<EVT>();
DateDetailsScrollView _lv = null;
@Override
protected String doInBackground(Object... cal) {
_lv = (DateDetailsScrollView)cal[0];
//The SQL cannot be shared here... Please forgive me.
boolean f = cursor.moveToFirst();
while(f) {
EVT evt = new EVT();
evt.loadFromCursor(cursor);
f = cursor.moveToNext();
_mEvents.add(evt);
cc++;
}
return "";
}
@Override
protected void onPostExecute(String result) {
for(EVT ev : _EVT) {
_lv.addEvent(ev);
}
}
}
public class DateDetailsScrollView extends ScrollView {
private EventRelativeLayout _mEventLayout = null;
public DateDetailsScrollView(Context context) {
super(context);
_mEventLayout = new EventRelativeLayout(context);
ll.addView(_mEventLayout);
LinearLayout ll = new LinearLayout(context);
ll.setOrientation(LinearLayout.HORIZONTAL);
addView(ll);
}
public void addEvent(final VEVENT evt) {
_mEventLayout.addEvent(evt);
invalidate();
this.refreshDrawableState();
}
}
public class EventRelativeLayout extends RelativeLayout {
public EventRelativeLayout(Context context) {
//This works fine.
super(context);
TextView tv = new TextView(context);
addView(tv);
int[] colors = { 0xFF052d42, 0xFF096da0 };
GradientDrawable drawable = new GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM, colors);
tv.setBackgroundColor(0xFF290202);
tv.setBackgroundDrawable(drawable);
tv.setHeight(49);
tv.setWidth(100);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.leftMargin = (int) 0;
params.topMargin = (int) 100;
tv.setLayoutParams(params);
}
public void addEvent(EVT evt) {
TextView tv = new TextView(getContext());
addView(tv);
int[] colors = { 0xFF052d42, 0xFF096da0 };
GradientDrawable drawable = new GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM, colors);
tv.setBackgroundColor(0xFF290202);
tv.setBackgroundDrawable(drawable);
tv.setHeight(100);
int dm = em -eh;
int dh = eh - sh;
if( dm < 0) {
dm += 60;
dh--;
}
tv.setWidth(100);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.leftMargin = 0;
params.topMargin = 600;
tv.setHeight(49);
tv.setLayoutParams(params);
}
=========================异步任务===================================
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
DateDetailsScrollView sc = new DateDetailsScrollView(container.getContext());
new SyncInThread().execute(sc);
return sc;
}
private static class SyncInThread extends AsyncTask<Object, Void, String> {
private ArrayList<EVT> _mEvents = new ArrayList<EVT>();
DateDetailsScrollView _lv = null;
@Override
protected String doInBackground(Object... cal) {
_lv = (DateDetailsScrollView)cal[0];
//The SQL cannot be shared here... Please forgive me.
boolean f = cursor.moveToFirst();
while(f) {
EVT evt = new EVT();
evt.loadFromCursor(cursor);
f = cursor.moveToNext();
_mEvents.add(evt);
cc++;
}
return "";
}
@Override
protected void onPostExecute(String result) {
for(EVT ev : _EVT) {
_lv.addEvent(ev);
}
}
}
public class DateDetailsScrollView extends ScrollView {
private EventRelativeLayout _mEventLayout = null;
public DateDetailsScrollView(Context context) {
super(context);
_mEventLayout = new EventRelativeLayout(context);
ll.addView(_mEventLayout);
LinearLayout ll = new LinearLayout(context);
ll.setOrientation(LinearLayout.HORIZONTAL);
addView(ll);
}
public void addEvent(final VEVENT evt) {
_mEventLayout.addEvent(evt);
invalidate();
this.refreshDrawableState();
}
}
public class EventRelativeLayout extends RelativeLayout {
public EventRelativeLayout(Context context) {
//This works fine.
super(context);
TextView tv = new TextView(context);
addView(tv);
int[] colors = { 0xFF052d42, 0xFF096da0 };
GradientDrawable drawable = new GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM, colors);
tv.setBackgroundColor(0xFF290202);
tv.setBackgroundDrawable(drawable);
tv.setHeight(49);
tv.setWidth(100);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.leftMargin = (int) 0;
params.topMargin = (int) 100;
tv.setLayoutParams(params);
}
public void addEvent(EVT evt) {
TextView tv = new TextView(getContext());
addView(tv);
int[] colors = { 0xFF052d42, 0xFF096da0 };
GradientDrawable drawable = new GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM, colors);
tv.setBackgroundColor(0xFF290202);
tv.setBackgroundDrawable(drawable);
tv.setHeight(100);
int dm = em -eh;
int dh = eh - sh;
if( dm < 0) {
dm += 60;
dh--;
}
tv.setWidth(100);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.leftMargin = 0;
params.topMargin = 600;
tv.setHeight(49);
tv.setLayoutParams(params);
}
私有静态类SyncInThread扩展异步任务{
private ArrayList _mEvents=new ArrayList();
DateDetailsScrollView _lv=null;
@凌驾
受保护字符串doInBackground(对象…校准){
_lv=(DateDetailsScrollView)cal[0];
//SQL不能在这里共享…请原谅我。
布尔值f=cursor.moveToFirst();
while(f){
EVT EVT=新的EVT();
evt.loadFromCursor(光标);
f=游标。moveToNext();
_添加(evt);
cc++;
}
返回“”;
}
@凌驾
受保护的void onPostExecute(字符串结果){
对于(EVT ev:_EVT){
_低压附加电压(ev);
}
}
}
公共类DateDetailsScrollView扩展了ScrollView{
private EventRelativeLayout\u mEventLayout=null;
公共DateDetailsScrollView(上下文){
超级(上下文);
_mEventLayout=新事件相对论(上下文);
ll.addView(_mEventLayout);
LinearLayout ll=新的LinearLayout(上下文);
ll.设置方向(水平线性布局);
addView(ll);
}
公共无效添加事件(最终事件evt){
_mEventLayout.addEvent(evt);
使无效();
此.refreshDrawableState();
}
}
公共类EventRelativeLayout扩展了RelativeLayout{
public EventRelativeLayout(上下文){
//这个很好用。
超级(上下文);
TextView tv=新的TextView(上下文);
addView(电视);
int[]颜色={0xFF052d42,0xFF096da0};
GradientDrawable可绘制=新的GradientDrawable(
GradientDrawable.Orientation.TOP\u-BOTTOM,颜色);
tv.setBackgroundColor(0xFF290202);
tv.可拉拔(可拉拔);
电视设定高度(49);
电视设置宽度(100);
RelativeLayout.LayoutParams params=新的RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_内容,RelativeLayout.LayoutParams.WRAP_内容);
params.leftMargin=(int)0;
参数topMargin=(int)100;
tv.setLayoutParams(参数);
}
公共无效添加事件(EVT EVT){
TextView tv=新的TextView(getContext());
addView(电视);
int[]颜色={0xFF052d42,0xFF096da0};
GradientDrawable可绘制=新的GradientDrawable(
GradientDrawable.Orientation.TOP\u-BOTTOM,颜色);
tv.setBackgroundColor(0xFF290202);
tv.可拉拔(可拉拔);
电视设置高度(100);
int dm=em-eh;
int-dh=eh-sh;
if(dm<0){
dm+=60;
dh--;
}
电视设置宽度(100);
RelativeLayout.LayoutParams params=新的RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_内容,RelativeLayout.LayoutParams.WRAP_内容);
params.leftMargin=0;
参数topMargin=600;
电视设定高度(49);
tv.setLayoutParams(参数);
}
}我明白了。这是一个编程错误,由于计算错误,veiw被添加到另一个页面。这是一个相当大的页边空白。尝试将其设置为较小的值,看看发生了什么600不是实际的保证金。最初是10岁。这是带有一个TextView的测试代码,我创建了一个TextView来查看行为是否有所改进。