0

I want to create ListView where items would have position like on screenshot. So text would be on left side and Switch on right. I know it should be done by TableLayout but I can't figure it out. Thanks for all help. enter image description here

Cœur
  • 37,241
  • 25
  • 195
  • 267
Sam
  • 308
  • 1
  • 3
  • 14
  • http://www.journaldev.com/10416/android-listview-with-custom-adapter-example-tutorial https://stackoverflow.com/questions/8166497/custom-adapter-for-list-view – Abdullah Tellioglu Jul 03 '17 at 18:01

3 Answers3

2

You can easily achieve this using SwitchPreference.

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <SwitchPreference
        android:defaultValue="true"
        android:key="key_data_saver"
        android:title="Data Saver"
        android:summary="Enable click-to-download for images and videos when using mobile data" />

</PreferenceScreen>

Here is an useful Tutorial: Android Implementing Preferences Settings Screen

OR,

If you want to create your own without SwicthPreference, then use RecyclerView with custom layout for each row item.

Here is your expected row item layout XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp">

    <Switch
        android:id="@+id/switchRight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:checked="true"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_toLeftOf="@id/switchRight"
        android:layout_marginRight="8dp">

        <TextView
            android:id="@+id/textTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="#000000"
            android:textSize="18sp"
            android:text="Data Saver"/>

        <TextView
            android:id="@+id/textDescription"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:textColor="#727272"
            android:textSize="16sp"
            android:text="Enable click-to-download for images and videos when using mobile data"/>
    </LinearLayout>

</RelativeLayout>

OUTPUT:

enter image description here

Hope this will help~

Ferdous Ahamed
  • 21,438
  • 5
  • 52
  • 61
0

The best way to implement this is with a PreferenceFragment.

You can create a XML file with all the Settings. (Let's say "settings.xml" inside the folder "XML" that you can create inside "res")

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

<PreferenceCategory android:title="@string/settings_category_app">
    <SwitchPreference
        android:defaultValue="false"
        android:key="@string/settings_notification_switch"
        android:summary="Enable Click to download images and videos..."
        android:title="Data Saver" />
</PreferenceCategory>

Update it is a static class because I created inside the main activity

After that you can add this resource to your SettingsFragment with:

public static class SettingsFragment extends PreferenceFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);
    }
}

Then you can use this fragment as any other one. (e.g. On a drawer)

João Elvas
  • 123
  • 1
  • 3
  • 16
0

TableLayout doesn't need in ur case, cause u don't have any tables. You have to use RelativeLayout instead:

<?xml version="1.0" encoding="utf-8"?>
   <RelativeLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:height="wrap_content"
        android:width="match_parent"
        >
        <TextView
            android:height="wrap_content"
            android:width="wrap_content"
            android:id="@+id/tvTitle"
            android:layout_alignParentLeft="true"
            android:text="Title"
         />
         <TextView
            android:height="wrap_content"
            android:width="wrap_content"
            android:id="@+id/tvSubTitle"
            android:layout_below="@id/tvTitle"
            android:text="Subtitle"
         />
         <ToggleButton
            android:height="wrap_content"
            android:width="wrap_content"
            android:id="@+id/tbSwitch"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:text="switch"
         />
    />

For IOS styling of ToggleButton u may to use this library: https://github.com/kyleduo/SwitchButton

borune
  • 548
  • 5
  • 21