gpt4 book ai didi

android - 如何以编程方式管理线性子布局?

转载 作者:行者123 更新时间:2023-11-29 01:58:41 24 4
gpt4 key购买 nike

关于布局元素的问题。

我想动态添加 View 。

逻辑代码:

    linear1 = (LinearLayout) findViewById(R.id.parent);
linear2 = (LinearLayout) findViewById(R.id.chiled);

int len = 4;

for (int i = 1; i <= len; i++) {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);

LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);

params1.gravity = Gravity.RIGHT;

final int id_txt;
ImageView iv = new ImageView(this);
iv.setId(i);
id_txt = iv.getId();
iv.setBackgroundResource(R.drawable.ic_launcher);
linear1.addView(iv, params);
iv = ((ImageView) findViewById(id_txt));

for (int j = 1; j < 2; j++) {
final int id_;
Button btn = new Button(this);
btn.setId(i);
id_ = btn.getId();
btn.setText("button " + id_);
linear2.addView(btn, params1);
btn = ((Button) findViewById(id_));

btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(v.getContext(),
"Button clicked index = " + id_,
Toast.LENGTH_SHORT).show();
}
});
}
// btn.setBackgroundColor(Color.rgb(70, 80, 90));

// linear1.addView(txt, params);

// params.addRule(RelativeLayout.RIGHT_OF, txt.getId());

iv.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Toast.makeText(view.getContext(),
"text clicked index = " + id_txt,
Toast.LENGTH_SHORT).show();
}
});
}
}

XML 代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
android:id="@+id/parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >

<LinearLayout
android:id="@+id/chiled"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</LinearLayout>
</LinearLayout>

</LinearLayout>

我想在父 View 中添加图像,在 subview 中动态添加两个按钮。

我启发制作这种类型的 View 表单

Android heterogeneous gridview like pinterest?

应该像

enter image description here

当前输出为

enter image description here

不知道哪里出了问题。

一个我现在在我的编辑器中遇到的奇怪问题如果我看到代码中的布局然后它会显示android:orientation="vertical" 并且如果我看到大纲 显示每个布局的 android:orientation="horizo​​ntal"。怎么可能?

帮我解决一下,谢谢

最佳答案

编辑:

首先,首先将您的按钮添加到 xml。连同 ImageView 。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/extra_root"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >

<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<LinearLayout
android:id="@+id/chiled"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Like" />

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dislike" />
</LinearLayout>

</LinearLayout>

然后您可以删除任何添加 View 的概念,因为它们已经存在。

package com.example.yul;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class extra extends Activity {
Button like, dislike;
LinearLayout root, sub;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.extra);

like = (Button) findViewById(R.id.button1);
dislike = (Button) findViewById(R.id.button2);

// add button listeners here.

ImageView iv = (ImageView) findViewById(R.id.image);

iv.setBackgroundResource(R.drawable.ic_launcher);

}
}
}

不过,这只会显示一张带有按钮的图像。

您需要做的是将此 xml 和代码应用到 gridView 或类似的。否则你会遇到身份冲突。

关于android - 如何以编程方式管理线性子布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13819178/

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