我是Android新手,我在复选框和文本视图方面遇到问题,但在运行时没有刷新。 TextView必须将颜色从浅灰色更改为浅灰色,而Checkbox必须将其自定义的drawable从红色更改为绿色。我已经尝试了分离并附加碎片但它关闭了,也许我不知道在哪里放置分离并附着在片段中。我尝试过invalidate()和requestLayout(),它也关闭了。我尝试在onCreateView()中使用它们,也许我不应该把它们放在那里。我的片段没有活动。这是我需要改变的图像。它在预览窗口中的内容是绿色自定义复选框drawables,但在运行时它们是红色自定义drawables,这是我们之前将它们更改为绿色,而TextViews在预览窗口中是浅灰色但是它们更暗在运行时灰色,这是他们以前的。
public class CheckListFragment extends Fragment{
private RelativeLayout fragment_checklist;
private Fragment fragment = new CheckListFragment();
private Checkbox chkStart, chkDownload;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_checklist, container, false);
fragment_checklist = (RelativeLayout) rootView.findViewById(R.id.fragment_checklist_gather);
chkStart = (CheckBox) rootView.findViewById(R.id.chkStarted);
chkDownload = (CheckBox) rootView.findViewById(R.id.chkDownloaded);
//tried to explicitly make it green but doesn't work.
chkStart.setButtonDrawable(R.drawable.custom_green_checkbox);
chkDownload.setButtonDrawable(R.drawable.custom_green_checkbox);
fragment.getView().invalidate(); // tried these
fragment.getView().requestLayout();// tried these
//tried this. Maybe in the wrong spot.
FragmentTransaction ft = getFragmentManager.beginTransaction();
ft.detach(fragment);
ft.attach(fragment);
ft.commit();
return rootView;
}
}
<RelativeLayout xmlns:ads="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<CheckBox
android:id="@+id/chkStarted"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/start"
android:layout_below="@+id/chkInProgess"
android:gravity="top"
android:padding="4dp"
android:checked="true"
android:enabled="false"
android:layout_marginTop="10dp"
android:button="@xml/custom_checkbox_green"/>
<CheckBox
android:id="@+id/chkDownloaded"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_below="@+id/chkStarted"
android:text="@string/download"
android:gravity="top"
android:padding="4dp"
android:checked="true"
android:enabled="false"
android:button="@xml/custom_checkbox_green"/>
</RelativeLayout>
textviews不会在运行时更改颜色,我尝试刷新布局,但它们在运行时不会刷新。它们是预览窗口中需要的东西,但它们并不是它们在运行时应该存在的东西。任何帮助将非常感激。提前谢谢!
答案 0 :(得分:0)
我明白了。我读过其他一些stackoverflow页面,他们将textview设置为不可见,然后可见。这对我不起作用,但我发现将复选框设置为未选中,然后再次检查将其固定在onCreateView中。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_checklist, container, false);
chkStart = (CheckBox) rootView.findViewById(R.id.chkStarted);
chkDownload = (CheckBox) rootView.findViewById(R.id.chkDownloaded);
chkStart.setChecked(false);
chkStart.setChecked(true);
chkDownload.setChecked(false);
chkDownload.setChecked(true);
return rootView;
}
问题是复选框已经被检查过,这意味着它们是红色的,并且它显示为绿色,必须取消选中,然后再次检查。另外,我有其他代码使它显示为绿色。所以,这是我的解决方案。