gpt4 book ai didi

android - 更改动态添加的 View 的高度

转载 作者:行者123 更新时间:2023-11-29 01:36:37 25 4
gpt4 key购买 nike

我在 android 中工作,我正在向线性布局动态添加 View 。我从 ViewTreeObserver 获取动态添加的 View 的高度,但在我在 ViewTreeObserver 中实用地设置高度后,它不会改变。请查看我的代码

创建时

 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.wwww);

ScrollView parentScrollView = (ScrollView) findViewById(R.id.parentscroll);

parentScrollView.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {

findViewById(R.id.subscroll).getParent()
.requestDisallowInterceptTouchEvent(false);
return false;
}
});

((ScrollView) findViewById(R.id.subscroll))
.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {

v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});

new TESTT().execute();

final LinearLayout tv = (LinearLayout) findViewById(R.id.subscrollLinearLayout);
ViewTreeObserver vto = tv.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

public void onGlobalLayout() {


if (tv.getChildAt(0) != null) {
int btnsize = tv.getChildAt(0).getHeight();
ScrollView scrolllayout = (ScrollView) findViewById(R.id.subscroll);
scrolllayout.getLayoutParams().height = btnsize * 2;
}

}
});
}

异步任务:

private class TESTT extends AsyncTask<Void, Void, Void> {

@Override
protected Void doInBackground(Void... params) {
try {
Thread.sleep(4000);//Time taken to consume the web service. If there
// is no delay the code work correct
} catch (InterruptedException e) {

e.printStackTrace();
}
return null;
}

@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);


LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final LinearLayout layout = (LinearLayout) findViewById(R.id.subscrollLinearLayout);
List<String> mSempLog = new ArrayList<String>();

mSempLog.add("TEST1");
mSempLog.add("TEST2");
mSempLog.add("TEST3");
mSempLog.add("TEST4");
mSempLog.add("TEST5");
mSempLog.add("TEST6");
mSempLog.add("TEST7");
mSempLog.add("TEST8");



for (int i = 0; i < 10; i++) {

LinearLayout service_row = (LinearLayout) inflater.inflate(
R.layout.summary_list_row, null);

TextView mServiceSlNo = (TextView) service_row
.findViewById(R.id.summary_list_textslNo);

TextView mServiceText = (TextView) service_row
.findViewById(R.id.summary_list_textService);

TextView mStartDate = (TextView) service_row
.findViewById(R.id.summaryview_list_initiated_text);

TextView mEndDate = (TextView) service_row
.findViewById(R.id.summaryview_list_completed_text);

TextView mFullyEngaged = (TextView) service_row
.findViewById(R.id.summaryview_fully_count_text);

TextView mProgress = (TextView) service_row
.findViewById(R.id.summaryview_listentry_TextView);

LinearLayout mServiceLinearLayout = (LinearLayout) service_row
.findViewById(R.id.summary_list_sercicelayout);

mServiceSlNo.setText(Integer.toString(i + 1) + ".");
mServiceText.setText("fdgdfgdfg");
mStartDate.setText("fdgdfgdfg");

mFullyEngaged.setText("fdgdfgdfg");

mServiceLinearLayout.setTag(i);
layout.addView(service_row, i);

}

}

}

最佳答案

任何你想添加的东西都有一些布局,把它放在layout.xml文件中

并使用这种方法在您的父布局中添加一个新 View 。

LinearLayout lay_toAddItems = (LinearLayout) rootView
.findViewById(R.id.lay_toAddItems);
View hiddenInfo = orderDetails.getLayoutInflater().inflate(
R.layout.include_items_invieworder, lay_toAddItems,
false);
lay_toAddItems.addView(hiddenInfo);
  • rootview = parentLayout。
  • lay_toAddItems = 您要在其中添加
  • 新 View include_items_invieworder = 您的新布局。

编辑部分:

LinearLayout layoutDialog = (LinearLayout) findViewById(R.id.lay_forgotpassword);

layoutDialog.setLayoutParams(new FrameLayout.LayoutParams(dialogWidth*3/4+dialogWidth*1/8,LayoutParams.WRAP_CONTENT));

关于android - 更改动态添加的 View 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27561363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com