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)
.承诺();
}

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...