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