gpt4 book ai didi

android - 以编程方式对齐 View

转载 作者:行者123 更新时间:2023-11-30 01:27:08 25 4
gpt4 key购买 nike

我正在尝试以编程方式创建一个 contentView,但我无法理解为什么以下代码无法按我的意愿运行。这是代码:

public class UserProfile extends AppCompatActivity {
ScrollView scrollView;
LinearLayout contentnView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
ServerRequest serverRequest = new ServerRequest(this);
final String userid = intent.getStringExtra(PostPopUp.EXTRA_USER_PROFILE_ID);
serverRequest.getUserPostsInBackground(userid, new GetCallback() {
@Override
public void done(ArrayList<Document> docs) {
contentnView = new LinearLayout(UserProfile.this);
contentnView.setOrientation(LinearLayout.VERTICAL);
setContentView(contentnView);
RelativeLayout relativeLayoutWithView = new RelativeLayout(UserProfile.this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
relativeLayoutWithView.setLayoutParams(params);
relativeLayoutWithView.setPadding(16, 16, 16, 16);
relativeLayoutWithView.setBackgroundColor(Color.WHITE);
FacebookSdk.sdkInitialize(getApplicationContext());
ProfilePictureView profilePictureView = new ProfilePictureView(UserProfile.this);
profilePictureView.setProfileId(userid);
profilePictureView.setId(View.generateViewId());
final HashMap<Integer, View> lines = new HashMap<>();

int i = 0;

for (Document post : docs) {
lines.put(i, new View(UserProfile.this));
i++;
}
RelativeLayout.LayoutParams paramsProfileImg = new RelativeLayout.LayoutParams(170, 170);
paramsProfileImg.addRule(RelativeLayout.CENTER_HORIZONTAL, 1);
relativeLayoutWithView.addView(profilePictureView, paramsProfileImg);
for (int j = 0; j < textViews.size(); j++) {
RelativeLayout.LayoutParams paramsLine = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 1);
if (j == 0) {
paramsLine.addRule(RelativeLayout.BELOW, profilePictureView.getId());
} else {
paramsLine.addRule(RelativeLayout.BELOW, lines.get(j - 1).getId());
}

paramsLine.setMargins(0, 16, 0, 0);
lines.get(j).setLayoutParams(paramsLine);
relativeLayoutWithView.addView(lines.get(j), paramsLine);
}
scrollView = new ScrollView(UserProfile.this);
scrollView.addView(relativeLayoutWithView);
contentnView.addView(scrollView);
}
});



}
}

我想要的是第一个 View (就像 hr btw 一样只是一条线)在个人资料图片 View 下方对齐(它确实如此),而其他 View 则在另一个 View 下方对齐。实际发生的是第一个 View 在个人资料图片 View 下方对齐,所有其他 View 都堆叠到屏幕的开头。

有什么想法吗?

.. serverRequest.getUserPostsInBackground 只是一个 AsynkTask

最佳答案

由于您使用的是相对布局,因此您应该将要添加的每个新 View 对齐到预先添加的 View 下。
我认为你正在这样做我不确定,因为我不知道 lines 字段用于什么( View 列表?),以防万一 - 尝试并明确设置每个新的 id查看您创建的 View ,我怀疑它们都添加到顶部,因为 id 字段是 0 或类似的东西,所以您使用的布局参数是无用的(即它们都在 View 下与 id -1 或 0 对齐,因为它们只得到完成创建整个 View 的操作后会有 id)

关于android - 以编程方式对齐 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36294094/

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