修改ListFragment的主题与活动不同?

时间:2011-05-25 08:32:14

标签: android android-fragments

基本上我想在清单中设置我的活动的主题如下:

android:theme="@android:style/Theme.Translucent.NoTitleBar"

我希望我的活动加载一个主题为Theme.Holo.Dialog的ListFragment(以我自己的风格定义),但我不能只在我的片段中调用setStyle(....)如果它是DialogFragment。

我相信我应该可以使用ContextThemeWrapper,但是我无法理解我需要进行的调用。到目前为止,在我的onCreateView中我有:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    LayoutInflater newInflater = inflater.cloneInContext(new ContextThemeWrapper(getActivity(), R.style.DialogThemeSelector));
    View inflatedView = newInflater.inflate(R.layout.favourites_print, container, false);
    .....

但这不起作用。提前致谢。彼得。

* 编辑* 发布方式:

<style name="DialogThemeSelector" parent="@android:style/Theme.Holo.Dialog"/>

4 个答案:

答案 0 :(得分:2)

尝试获取新的LayoutInflater而不是转换提供的Context newContext = new ContextThemeWrapper(getActivity(), R.style.DialogThemeSelector); LayoutInflater newInflater = (LayoutInflater) newContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); View inflatedView = newInflater.inflate(R.layout.favourites_print, container, false); ,如下所示:

style

如果这不起作用,我会怀疑您的{{1}}可能缺少某些内容。

答案 1 :(得分:1)

我只是以天真的方式做到:我使用style属性在XML中定义列表项布局,它似乎有用。我的列表项目并不关心它们是否在片段中。我没有尝试过对片段本身进行样式设置,但由于列表项是其中唯一的内容,因此设置它们似乎就足够了。

答案 2 :(得分:1)

也许我误解了,但是您是否只能在清单中为包含列表碎片的活动设置主题?

编辑:在查看之后,我最好的建议是查看dialogfragment的来源,并尝试在自己的自定义片段中复制行为。

OR

以新的fragmentactivity = /

开始你的片段

答案 3 :(得分:1)

尝试使用requestWindowFeature(Window.FEATURE_NO_TITLE);而不是android:theme =“@ android:style / Theme.Translucent.NoTitleBar”

并将清单targetSdkVersion =“14”放入使用Theme.Holo。