Question

I'm trying to implement a settings page for my app on Android. It worked well if I put the layout file like this:

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

<CheckBoxPreference
    android:defaultValue="true"
    android:key="autoBack"
    android:summaryOff="Let strange calls in"
    android:summaryOn="Unlisted calls will be blocked"
    android:title="Block Strange Calls" />

<PreferenceCategory android:title="Blocking Options" >
    <CheckBoxPreference
        android:defaultValue="false"
        android:key="smsSilence"
        android:summaryOff="Off"
        android:summaryOn="On"
        android:title="Send Blocked caller message" />

    <PreferenceScreen android:title="More Options" >
        <CheckBoxPreference
            android:defaultValue="true"
            android:key="cb21"
            android:summaryOff="关闭"
            android:summaryOn="开启"
            android:title="功能1" />
        <CheckBoxPreference
            android:defaultValue="true"
            android:key="cb22"
            android:summaryOff="停用"
            android:summaryOn="使用"
            android:title="功能2" />
    </PreferenceScreen>
</PreferenceCategory>

In the programs, the codes calling the layout is:

Intent j = new Intent("android.intent.action.PREFS");
startActivity(j);

public class Prefs extends PreferenceActivity {
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preference);
        }
}

And the result works like the pic below:

enter image description hereenter image description here

But actually I want my settings page can take up the full screen, so I add a "title bar"(just like the pic upside - I imagined) by myself in the layout xml, and I also add a "ratings our app" function, adding a RatingBarto my layout. So xml is changed to below:

<!-- language: lang-xml -->

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="35sp"
    android:background="@drawable/titlebg" >

    <ImageView
        android:id="@+id/titleIc"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@id/titleIc"
        android:text="RoboGuard"
        android:textColor="#ffffffff"
        android:textSize="16sp" />

    <ImageButton
        android:id="@+id/imagebutton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/setting" />

</RelativeLayout>

<CheckBoxPreference
    android:defaultValue="true"
    android:key="autoBack"
    android:summaryOff="Let strange calls in"
    android:summaryOn="Unlisted calls will be blocked"
    android:title="Block Strange Calls" />

<PreferenceCategory android:title="Blocking Options" >
    <CheckBoxPreference
        android:defaultValue="false"
        android:key="smsSilence"
        android:summaryOff="Off"
        android:summaryOn="On"
        android:title="Send Blocked caller message" />

    <PreferenceScreen android:title="More Options" >
        <CheckBoxPreference
            android:defaultValue="true"
            android:key="cb21"
            android:summaryOff="off"
            android:summaryOn="on"
            android:title="" />
        <CheckBoxPreference
            android:defaultValue="true"
            android:key="cb22"
            android:summaryOff="stop"
            android:summaryOn="stop"
            android:title="function2" />
    </PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory android:title="Rating the App" >
    <RatingBar
        android:id="@+id/rating"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:max="255"
        android:numStars="5"
        android:progress="255"
        android:stepSize="0.5" />
</PreferenceCategory>

But when I ran the program, it generated fatal error:

java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: android.view.InflateException: Binary XML file line #4: Error inflating class RelativeLayout

java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: android.view.InflateException: Binary XML file line #36: Error inflating class RatingBar

Could anyone please help me out? Moreover, how to make the PreferenceActivity take up the full screen to show? Thanks to all!

Was it helpful?

Solution

// try this
**preferences_header.xml**
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical">
        <ImageView
                android:id="@+id/titleIc"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:src="@drawable/ic_launcher"
                android:adjustViewBounds="true"
                android:scaleType="fitXY"/>

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="RoboGuard"
                android:textColor="#ffffffff"
                android:textSize="16sp" />

        <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="1"
                android:gravity="right"
                android:layout_height="wrap_content">
            <ImageButton
                    android:id="@+id/imagebutton1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher"
                    android:adjustViewBounds="true"
                    android:scaleType="fitXY"/>
        </LinearLayout>
    </LinearLayout>

    <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>
</LinearLayout>

**preferences.xml**
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="wrap_content">

    <CheckBoxPreference
            android:defaultValue="true"
            android:key="autoBack"
            android:summaryOff="Let strange calls in"
            android:summaryOn="Unlisted calls will be blocked"
            android:title="Block Strange Calls" />

    <PreferenceCategory android:title="Blocking Options" >
        <CheckBoxPreference
                android:defaultValue="false"
                android:key="smsSilence"
                android:summaryOff="Off"
                android:summaryOn="On"
                android:title="Send Blocked caller message" />

        <PreferenceScreen android:title="More Options" >
            <CheckBoxPreference
                    android:defaultValue="true"
                    android:key="cb21"
                    android:summaryOff="off"
                    android:summaryOn="on"
                    android:title="" />
            <CheckBoxPreference
                    android:defaultValue="true"
                    android:key="cb22"
                    android:summaryOff="stop"
                    android:summaryOn="stop"
                    android:title="function2" />
        </PreferenceScreen>
    </PreferenceCategory>
</PreferenceScreen>

**MainActivity**
public class MainActivity extends PreferenceActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.preferences_header);
        addPreferencesFromResource(R.layout.preferences);
    }
}

// PreferenceCategory not have RatingBar as child view so you can not declare. 
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top