gpt4 book ai didi

java - 基于android设备的不同fragment布局

转载 作者:行者123 更新时间:2023-12-01 13:36:06 25 4
gpt4 key购买 nike

我正在开发一个使用 fragment 的 Android 应用程序。我使用了在创建向导中生成的 fragment 的标准模板。现在,当“mTwoPane”为 true(屏幕尺寸高于 600dp)时,我想使用不同的“ItemListFragment”布局。单 Pane 设备上的布局将具有标题和 2x3 图标布局,而 mTwoPane 设备不会有标题并具有 1x6 布局,因此所有图标都将位于彼此下方。

在我的 ItemListActivity.java 中,已检查或存在 item_detail_container 。如果是,则 mTwoPane 设置为 true。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_item_list);

if (findViewById(R.id.item_detail_container) != null) {
// The detail container view will be present only in the
// large-screen layouts (res/values-large and
// res/values-sw600dp). If this view is present, then the
// activity should be in two-pane mode.
mTwoPane = true;

// In two-pane mode, list items should be given the
// 'activated' state when touched.
((ItemListFragment) getSupportFragmentManager()
.findFragmentById(R.id.item_list))
.setActivateOnItemClick(true);
}


}

我的第一个想法是也在我的 ItemListFragment 中检查 mTwoPane,并根据此选择 RootView。但我无法让它发挥作用。这是我在 ItemListFragment 中所做的:

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view;
boolean mTwoPane;
if (getView().findViewById(R.id.item_detail_container) != null) {
mTwoPane = true;
}
else mTwoPane = false;

if(!mTwoPane){
view = inflater.inflate(R.layout.mobile_list, container, false);
}
else{
view = inflater.inflate(R.layout.tablet_list, container, false);
}

return view;
}

但这显然行不通,因为需要先实例化 View ,然后才能检查或 item_detail_container 存在。

然后我开始思考,fragment 是否应该意识到布局?也许我应该有 2 种列表布局,一种用于平板电脑,一种用于移动设备。但话说回来,

setContentView(R.layout.activity_item_list);

必须首先调用以检查 mTwoPane 是否为 true。

执行此操作的最佳方法是什么?

最佳答案

Android 将根据资源限定符或存储桶选择要使用的布局资源。

例如

布局-mdpi布局-hdpi布局-xlarge布局端口布局-sw600dp

这些都是资源桶,都可以包含一个名为activity_item_list的布局文件。然后,Android 将根据当前设备属性选择要使用的布局文件。

因此,解决方案是创建一个存在于布局文件夹和layout-sw600dp文件夹(或您当前拥有的任何文件夹)中的list_fragment布局文件。可以针对平板电脑调整layout-sw600dp文件夹中的布局。

阅读这些文章以获取更多信息:

http://android-developers.blogspot.co.uk/2011/07/new-tools-for-managing-screen-sizes.html http://developer.android.com/guide/practices/screens_support.html http://developer.android.com/guide/topics/resources/providing-resources.html

关于java - 基于android设备的不同fragment布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21260794/

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