gpt4 book ai didi

android - 以编程方式膨胀 View 的最佳方式

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:12 24 4
gpt4 key购买 nike

我发现了一个简单的 SwipeSample,我对其进行了更改以允许我创建新的 xml 布局并扩展主布局以显示它们。我还想做的是能够以编程方式为滑动过程添加布局。

我有 main.xml 布局以及 red.xml 和 yellow.xml,它们是一个简单的线性布局, TextView 设置为纯色。

下面的代码有效,但我不认为它是正确的,也不是实现我想要实现的目标的最佳方式。如果有人能提出更好的方法,我们将不胜感激。

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Create a layout with a solid blue background programmatically
TextView tv1 = new TextView(this);
tv1.setText("Blue");
tv1.setBackgroundColor(Color.BLUE);
tv1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
ll.addView(tv1);
//Create a layout with a solid green background programmatically
TextView tv2 = new TextView(this);
tv2.setText("Green");
tv2.setBackgroundColor(Color.GREEN);
tv2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

LinearLayout ll2 = new LinearLayout(this);
ll2.setOrientation(LinearLayout.VERTICAL);
ll2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
ll2.addView(tv2);
//inflate the flipper view and add the yellow and red xml layouts and also the 2 programmatically created layouts
fSpace = (ViewFlipper)findViewById(R.id.flipper);
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.yellow, fSpace);
inflater.inflate(R.layout.red, fSpace);
fSpace.addView(ll);
fSpace.addView(ll2);

}

最佳答案

如果您想以编程方式创建复杂的布局,可能最简单的方法是在 xml 中预制布局,然后将其扩充并在运行时添加。

在xml中创建 View

这是布局文件夹中的示例预制 xml 布局。您的可以是任何东西,单个 View 或整个复杂的布局。

布局/my_view.xml

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

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/TextView1"
android:text="This is a TV"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/TextView2"
android:text="How are you today?"/>
</LinearLayout>

为您的 View 创建一个容器

在某个地方放置您的 View 到您的 Activity 布局中。你可以有这样的东西。

<FrameLayout
android:id="@+id/flContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

</FrameLayout>

膨胀 View

使用获取对容器的引用,从 xml 扩展您的 View ,然后将其添加到容器。

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

FrameLayout container = (FrameLayout) findViewById(R.id.flContainer);
View inflatedLayout= getLayoutInflater().inflate(R.layout.my_view, null, false);
container.addView(inflatedLayout);

}

这样做可以使您的代码更加简洁。

另见:

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

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