微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 如何更改以不同显示大小显示片段的方式?

我目前正在为Android设备制作应用程序,我想知道如何更改以不同显示尺寸显示片段的方式(例如平板电脑).

此时我的所有片段都有一个活动,这导致我在更改页面时替换片段,但对于平板电脑,我想在该活动中显示2个片段.

我为我的主要活动创建了一个布局大版本:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".PaginaInicial"
    tools:showIn="@layout/app_bar_pagina_inicial">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <fragment
            class="pt.ipp.estg.schoolhelperapp.apontamento.ListaApontFragment"
            android:id="@+id/a_fragment"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
        <fragment
            class="pt.ipp.estg.schoolhelperapp.apontamento.VerApontFragment"
            android:id="@+id/b_fragment"
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="match_parent" />

</LinearLayout>

</android.support.constraint.ConstraintLayout>

片段容器位于主要活动的布局 – 小版本内.

其中一个片段显示项目列表(@ id / a_fragment),另一个片段显示我之前选择的一个特定项目的信息(@ id / b_fragment).

解决方法:

有关详细信息,请参阅此文档:https://developer.android.com/training/multiscreen/screensizes

>在res / values / refs.xml中创建认别名资源值文件,并在其中放置以下代码.该值将引用只有一个片段的布局文件.

<resources>
        <item name="activity_masterdetail" type="layout">@layout/layout_with_single_fragment</item>
     </resources>

>现在需要创建一个替代资源,以便activity_masterdetail别名将指向更大设备上的layout_with_two_fragment.xml.
创建一个具有相同名称refs.xml的新文件,但在可用限定符下使用最小屏幕宽度的资源限定符.使用600dp或更大的最小尺寸(sw600dp限定符)

<resources>
<item name="activity_masterdetail" type="layout">@layout/layout_with_two_fragment</item>
</resources>

你的目标是拥有这样的逻辑:

>对于指定大小的设备,即手机,请使用layout_with_single_fragment.xml.
>对于超过指定大小的设备,请使用layout_with_two_fragment.xml.

>现在在显示列表的man活动中,使用setContentView(R.layout.activity_masterDetail),即引用布局的名称
>如果此代码将在移动电话上运行,则activity_masterDetail将引用正常的refs.xml文件,但如果此代码在平板电脑上运行,则将使用资源限定的refs.xml文件.
>在您的活动逻辑中,您希望在表格的同一屏幕上显示主要和详细信息布局但在电话上打开另一个活动,请在列表项目的onClick()内使用以下逻辑

if(findViewById(R.id.a_fragment)== null)
{
Intent intent = A_Activity.newIntent(this,listItem.getId());
startActivity(意向);
}

其他
{
Fragment newDetail = B_Fragment.newInstance(list_item.getId());
getSupportFragmentManager().的BeginTransaction()
.replace(R.id.b_fragment,newDetail)
.承诺();
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐