其他分享
首页 > 其他分享> > Android – 更改保证金的背景颜色

Android – 更改保证金的背景颜色

作者:互联网

我有一个名为HostFragment的片段,它嵌套了一到四个其他片段.

这是HostFragment的布局:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/hostFragmentLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="12dp">

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

        <RelativeLayout
            android:id="@+id/fragmentContainer1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"/>

        <RelativeLayout
            android:id="@+id/fragmentContainer2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"/>

    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

        <RelativeLayout
            android:id="@+id/fragmentContainer3"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"/>

        <RelativeLayout
            android:id="@+id/fragmentContainer4"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"/>

    </TableRow>

</TableLayout>

其中重要的部分是android:layout_marginTop =“12dp”.

背景:除此边距外,嵌套片段覆盖整个HostFragment.当嵌套片段更改其背景颜色时(通过调用Canvas#drawColor),HostFragment还需要更改此边距的颜色以匹配.我将所需的颜色存储在SharedPreferences中.

行为:如果用户从HostFragment转到SettingsActivity,更改颜色,并返回到HostFragment,嵌套的片段将立即更改其颜色(通过其onResume()方法),但HostFragment的边距仍将是旧颜色.如果用户随后离开HostFragment并转到另一个片段,然后返回到HostFragment,则边距将更新其颜色.我不知道如何或为什么 – 我在HostFragment中没有代码来更新颜色. HostFragment中的代码仅处理交换嵌套片段.

问题:我需要立即更新边距颜色,所以在onResume()中,我尝试了类似mTableLayout.setBackgroundColor(…)甚至mView.setBackgroundColor(…)的东西(mView是我膨胀的布局) onCreateView()).这仍然不起作用,只有当用户离开并返回时颜色才会更新.

问题:一旦用户从另一个Activity返回HostFragment(即用户从设置中返回后),如何更改边距的颜色以匹配SharedPreferences中的int值?

先感谢您!

解决方法:

尝试给出paddingTop而不是marginTop,然后通过mView.setBackgroundColor(…)更改onResume中视图的颜色.

>边距是视图外的空间,因此视图的背景颜色不会反映在边距空间中.
>填充是视图内部的空间,给予视图的背景颜色也将应用于填充空间.

标签:android,android-layout,xml-layout
来源: https://codeday.me/bug/20190516/1116896.html