欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 【安卓】动态加载布局技巧

【安卓】动态加载布局技巧

2024/11/30 6:39:52 来源:https://blog.csdn.net/qq_47658735/article/details/140947505  浏览:    关键词:【安卓】动态加载布局技巧

文章目录

      • 使用限定符
        • 常见限定符
      • 使用最小宽度限定符

使用限定符

  修改FragmentTest项目中的activity_main.xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="match_parent" ><fragmentandroid:id="@+id/leftFrag"android:name="com.example.fragmenttest.LeftFragment"android:layout_width="match_parent"android:layout_height="match_parent"/>
</LinearLayout>

  将多余的代码删掉,只留下一个左侧Fragment,并让它充满整个父布局。接着在res目录下新建layout-large文件夹,在这个文件夹下新建一个布局,也叫作activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="match_parent"><fragmentandroid:id="@+id/leftFrag"android:name="com.example.fragmenttest.LeftFragment"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1" /><fragmentandroid:id="@+id/rightFrag"android:name="com.example.fragmenttest.RightFragment"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="3" />
</LinearLayout>

  layout/activity_main布局只包含了一个Fragment,即单页模式,而layoutlarge/ activity_main布局包含了两个Fragment,即双页模式。其中,large就是一个限定符,那些屏幕被认为是large的设备就会自动加载layout-large文件夹下的布局,小屏幕的设备则还是会加载layout文件夹下的布局。

public class MainActivity extends AppCompatActivity implements View.OnClickListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button =(Button) findViewById(R.id.button);button.setOnClickListener(this);
//        replaceFragment(new RightFragment());}@Overridepublic void onClick(View v) {switch(v.getId()){case R.id.button:replaceFragment(new AnotherRightFragment());break;default:break;}}private void replaceFragment(Fragment fragment){FragmentManager fragmentManager = getSupportFragmentManager();FragmentTransaction transaction = fragmentManager.beginTransaction();transaction.replace(R.id.rightFrag, fragment);transaction.addToBackStack(null);transaction.commit();}
}

在这里插入图片描述

常见限定符
屏幕特征限定符描述
大小small提供给小屏幕设备的资源。
normal提供给中等屏幕设备的资源。
large提供给大屏幕设备的资源。
xlarge提供给超大屏幕设备的资源。
分辨率ldpi提供给低分辨率设备的资源(120 dpi以下)。
mdpi提供给中等分辨率设备的资源(120 dpi~160 dpi)。
hdpi提供给高分辨率设备的资源(160 dpi~240 dpi)。
xhdpi提供给超高分辨率设备的资源(240 dpi~320 dpi)。
xxhdpi提供给超超高分辨率设备的资源(320 dpi~480 dpi)。
分辨率land提供给横屏设备的资源
pord提供给竖屏设备的资源

使用最小宽度限定符

  最小宽度限定符(smallest-widthqualifier)允许我们对屏幕的宽度指定一个最小值(以dp为单位),然后以这个最小值为临界点,屏幕宽度大于这个值的设备就加载一个布局,屏幕宽度小于这个值的设备就加载另一个布局。

  在res目录下新建layout-sw600dp文件夹,这就意味着,当程序运行在屏幕宽度大于等于600 dp的设备上时,会加载对应的布局。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com