如何禁用PreferenceFragment透明度?

时间:2015-08-05 10:50:00

标签: android android-fragments

我想可以将平均片段中的背景颜色设置为平均布局,但是这里我已经PreferenceFragment,布局(PreferenceScreen)没有' t支持android:background字段。什么是处理它的巧妙方法?

enter image description here

2 个答案:

答案 0 :(得分:1)

将以下内容添加到PreferenceFragment类声明

 @Override
 public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 View view = super.onCreateView(inflater, container, savedInstanceState);
 if (view != null) {
     view.setBackgroundColor(getResources().getColor(android.R.color.background_dark));
 }

 return view;
 }

答案 1 :(得分:1)

添加我的答案,因为我与PreferenceFragmentCompat有类似的问题,仅通过向背景添加颜色并不能完全解决,这是在搜索问题时的最佳结果。

在使用PreferenceFragmentCompat可以正常工作时,我遇到了同样的问题,但是设置背景是透明的,您仍然可以看到底层活动中的视图-将getSupportFragmentManger中的.add()更改为.replace()会产生相同的覆盖。 / p>

更改背景颜色的解决方案有效。但是,对于我的构建,不建议使用getColor()方法。我改用下面的代码。

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    getListView().setBackgroundColor(Color.WHITE);
}

这解决了透明性问题,除了一个按钮仍然可以单击。为简洁起见,问题在于我正试图替换包含活动视图的布局。

最终的工作是以最高顺序创建一个空布局,并在该布局上使用.replace()。现在,这些按钮已被覆盖,不再可以单击。

在首选项片段上方仍可见按钮的XML。

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

     <!--I was replacing this layout that had all the activity views-->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintEnd_toStartOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintTop_toBottomOf="parent">

        <TextView
            android:text="Z"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/earth_acc_z"
            app:layout_constraintTop_toBottomOf="@+id/earth_acc_y"
            app:layout_constraintStart_toStartOf="@+id/earth_acc_y"
            app:layout_constraintEnd_toEndOf="@+id/earth_acc_y"
            app:layout_constraintHorizontal_bias="1.0"/>
        <Button
            android:text="Button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/button" android:layout_marginTop="8dp"
            app:layout_constraintTop_toBottomOf="@+id/toggleRecording"
            app:layout_constraintStart_toStartOf="@+id/toggleRecording" 
            android:layout_marginStart="8dp"/>

    </FrameLayout>
</android.support.constraint.ConstraintLayout>

具有新的空约束的工作示例XML。

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <!--FrameLayout with two nested ConstraintLayouts-->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintEnd_toStartOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintTop_toBottomOf="parent">

        <!--ConstraintLayout with acitivty views-->
        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent" android:id="@+id/frameLayout">

            <TextView
                android:text="Z"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/earth_acc_z"
                app:layout_constraintTop_toBottomOf="@+id/earth_acc_y"
                app:layout_constraintStart_toStartOf="@+id/earth_acc_y"
                app:layout_constraintEnd_toEndOf="@+id/earth_acc_y"
                app:layout_constraintHorizontal_bias="1.0"/>
            <Button
                android:text="Button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/button" android:layout_marginTop="8dp"
                app:layout_constraintTop_toBottomOf="@+id/toggleRecording"
                app:layout_constraintStart_toStartOf="@+id/toggleRecording" 
                android:layout_marginStart="8dp"/>

        </android.support.constraint.ConstraintLayout>

        <!--Preference fragment should replace this empty layout-->
        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/preferenceFragment"
            app:layout_constraintTop_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent">
        </android.support.constraint.ConstraintLayout>
    </FrameLayout>
</android.support.constraint.ConstraintLayout>