在所有活动中显示自定义视图

时间:2014-07-01 04:13:36

标签: android android-custom-view

我想展示一个应该在所有活动中展示的视图。我不知道如何在android中继承视图。我在下面做了什么,它在第一个活动中显示了视图,但在所有活动中都没有。这段代码是我的BaseActivity,请帮助

LayoutInflater inflater = getLayoutInflater();
View child = inflater.inflate(R.layout.custom_error, null);

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT , LayoutParams.WRAP_CONTENT );
params.addRule(RelativeLayout.ALIGN_PARENT_TOP);

addContentView(child, params);

4 个答案:

答案 0 :(得分:1)

您可以在View中获得特定于Android的Activity。例如,下面的代码会将TextView添加到Activity的内容区域。


    TextView tvSample = new TextView(this);
    tvSample.setText("Hello!");
    ((ViewGroup) hostActivity.findViewById(android.R.id.content)).addView(this);

其中hostActivity是您当前的Activityandroid.R.id.content是特定元素(内容区域,不包括ActionBar)。

或者,如前所述,在布局XML中使用<merge><include>标记。

答案 1 :(得分:0)

你可以用两个解决方案来做到这一点 以编程方式 1)将子视图添加到父视图后,需要调用setContentView(parentView)并将父布局传递给它。 和XMl 2)您可以使用include标签。点击此链接将对您有所帮助。 http://developer.android.com/training/improving-layouts/reusing-layouts.html

答案 2 :(得分:0)

你试过xml的'include'标签吗?它会完成这项工作。

 <include
 android:id="@+id/container_header_lyt"  
 android:layout_height="wrap_content"
 android:layout_width="fill_parent"
 android:layout_above=...
 android:layout_toLeftOf=...
 layout="@layout/header_logo_lyt" //Name of the xml layout file you want to include
 />

在layout / xxxx中,使用应重复的布局文件的名称。

在xml文件中使用上述代码之后,就像任何其他小部件一样。

答案 3 :(得分:0)

当你想要展示它时:

FrameLayout rootLayout = (FrameLayout)findViewById(android.R.id.content);
View.inflate(this, R.layout.overlay_layout, rootLayout);

然后当你想删除它时:

FrameLayout rootLayout = (FrameLayout)findViewById(android.R.id.content);
rootLayout.removeViewAt(rootLayout.getChildCount()-1);

这是一个简洁的解决方案,您应该通过在XML文件中提供View ID来删除RelativeLayout,然后按:rootLayout.removeView(findViewById(R.id.the_id_of_the_relative_layout));删除。

Answer

nmw