gpt4 book ai didi

android - 动态更改 Activity 中的查看内容

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

我从 Activity 类扩展的抽象类由三个 View 组成,如以下 XML fragment 所述:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@drawable/bg">

<LinearLayout
android:id="@+id/top_border">
...
</LinearLayout>

<View
android:id="@+id/activity_content"
...
/>

<LinearLayout
android:id="@+id/bottom_border">
...
</LinearLayout>
</LinearLayout>

onCreate() 方法中,我将此 XML 布局设置为内容 View 。

我希望扩展此 Activity 的 Activity 覆盖 onCreate() 并在那里定义 activity_content View 剩余边界不可变。

例如像这样:

abstract public class MyActivity extends Activity {
protected View mContent;

@Override
protected onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.common_layout);
initializeContent();
}

abstract void initializeContent();
}

class OneActivity extends MyActivity {

@Override
protected void initializeContent() {
mContent = View.inflate(this, R.layout.some_view, null); // i.e. concrete View (e.g. LinearLayout, FrameLayout, GridView, etc.)
}
}

但是当我这样做时,我的 mContent 与我在 MyActivityonCreate() 中定义它时保持不变。

如何根据前台的 Activity 更改 View 的类型/内容?

最佳答案

首先将主布局中的 View 更改为 View 组(例如,LinearLayout)。然后您可以向其添加 View 。如果您添加一个独特的 View ,它将完全具有您想要达到的效果。

class OneActivity extends MyActivity {
@Override
protected void initializeContent() {
final ViewGroup viewGroup = (ViewGroup) findViewById(R.id.activity_content);
viewGroup.addView(View.inflate(this, R.layout.some_view, null));
}
}

在您的情况下应该可以。如果您的自定义 View 组包含层次结构中更高层的其他 View ,您可以在添加自定义 View 之前清除它:

viewGroup.removeAllViews();

它有效,我在我的大多数项目中都这样做。

另一种方法是查看 Fragments API ,适用于最新版本的 SDK。

关于android - 动态更改 Activity 中的查看内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8880787/

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