Use filter adapter in google task list picker

pull/645/head
Alex Baker 7 years ago
parent 0ca7a89711
commit 12c906dc47

@ -4,15 +4,13 @@ import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.os.Bundle; import android.os.Bundle;
import com.todoroo.astrid.gtasks.GtasksListService; import com.todoroo.astrid.adapter.FilterAdapter;
import org.tasks.data.GoogleTaskList; import org.tasks.data.GoogleTaskList;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.gtasks.GoogleTaskListSelectionHandler; import org.tasks.gtasks.GoogleTaskListSelectionHandler;
import org.tasks.injection.InjectingNativeDialogFragment; import org.tasks.injection.InjectingNativeDialogFragment;
import org.tasks.injection.NativeDialogFragmentComponent; import org.tasks.injection.NativeDialogFragmentComponent;
import org.tasks.themes.ThemeAccent;
import org.tasks.themes.ThemeCache;
import javax.inject.Inject; import javax.inject.Inject;
@ -33,9 +31,7 @@ public class NativeGoogleTaskListPicker extends InjectingNativeDialogFragment {
public static final String EXTRA_SELECTED = "extra_selected"; public static final String EXTRA_SELECTED = "extra_selected";
@Inject DialogBuilder dialogBuilder; @Inject DialogBuilder dialogBuilder;
@Inject GtasksListService gtasksListService; @Inject FilterAdapter filterAdapter;
@Inject ThemeCache themeCache;
@Inject ThemeAccent themeAccent;
private GoogleTaskListSelectionHandler handler; private GoogleTaskListSelectionHandler handler;
@ -43,8 +39,7 @@ public class NativeGoogleTaskListPicker extends InjectingNativeDialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
Bundle arguments = getArguments(); Bundle arguments = getArguments();
GoogleTaskList selected = arguments.getParcelable(EXTRA_SELECTED); GoogleTaskList selected = arguments.getParcelable(EXTRA_SELECTED);
return createDialog(getActivity(), themeCache, dialogBuilder, gtasksListService, return createDialog(filterAdapter, dialogBuilder, selected, list -> handler.selectedList(list));
selected, themeAccent, list -> handler.selectedList(list));
} }
@Override @Override

@ -2,29 +2,22 @@ package org.tasks.activities;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import com.todoroo.astrid.gtasks.GtasksListService; import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.api.GtasksFilter;
import org.tasks.R;
import org.tasks.data.GoogleTaskList; import org.tasks.data.GoogleTaskList;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.gtasks.GoogleTaskListSelectionHandler; import org.tasks.gtasks.GoogleTaskListSelectionHandler;
import org.tasks.injection.DialogFragmentComponent; import org.tasks.injection.DialogFragmentComponent;
import org.tasks.injection.InjectingDialogFragment; import org.tasks.injection.InjectingDialogFragment;
import org.tasks.themes.ThemeAccent;
import org.tasks.themes.ThemeCache;
import org.tasks.ui.SingleCheckedArrayAdapter;
import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import static com.google.common.collect.Lists.transform;
public class SupportGoogleTaskListPicker extends InjectingDialogFragment { public class SupportGoogleTaskListPicker extends InjectingDialogFragment {
public static SupportGoogleTaskListPicker newSupportGoogleTaskListPicker(GoogleTaskList selected) { public static SupportGoogleTaskListPicker newSupportGoogleTaskListPicker(GoogleTaskList selected) {
@ -40,9 +33,7 @@ public class SupportGoogleTaskListPicker extends InjectingDialogFragment {
private static final String EXTRA_SELECTED = "extra_selected"; private static final String EXTRA_SELECTED = "extra_selected";
@Inject DialogBuilder dialogBuilder; @Inject DialogBuilder dialogBuilder;
@Inject GtasksListService gtasksListService; @Inject FilterAdapter filterAdapter;
@Inject ThemeCache themeCache;
@Inject ThemeAccent themeAccent;
private GoogleTaskListSelectionHandler handler; private GoogleTaskListSelectionHandler handler;
@ -51,8 +42,7 @@ public class SupportGoogleTaskListPicker extends InjectingDialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
Bundle arguments = getArguments(); Bundle arguments = getArguments();
GoogleTaskList selected = arguments == null ? null : arguments.getParcelable(EXTRA_SELECTED); GoogleTaskList selected = arguments == null ? null : arguments.getParcelable(EXTRA_SELECTED);
return createDialog(getActivity(), themeCache, dialogBuilder, gtasksListService, return createDialog(filterAdapter, dialogBuilder, selected, list -> handler.selectedList(list));
selected, themeAccent, list -> handler.selectedList(list));
} }
@Override @Override
@ -62,33 +52,16 @@ public class SupportGoogleTaskListPicker extends InjectingDialogFragment {
handler = (GoogleTaskListSelectionHandler) activity; handler = (GoogleTaskListSelectionHandler) activity;
} }
public static AlertDialog createDialog(Context context, ThemeCache themeCache, public static AlertDialog createDialog(FilterAdapter filterAdapter, DialogBuilder dialogBuilder,
DialogBuilder dialogBuilder, GtasksListService gtasksListService, GoogleTaskList selected, GoogleTaskListSelectionHandler handler) {
GoogleTaskList selected, ThemeAccent themeAccent, filterAdapter.populateRemoteListPicker();
final GoogleTaskListSelectionHandler handler) { int selectedIndex = filterAdapter.indexOf(new GtasksFilter(selected));
final List<GoogleTaskList> lists = gtasksListService.getLists();
List<String> listNames = transform(lists, GoogleTaskList::getTitle);
SingleCheckedArrayAdapter adapter = new SingleCheckedArrayAdapter(context, listNames, themeAccent) {
@Override
protected int getDrawable(int position) {
return R.drawable.ic_cloud_black_24dp;
}
@Override
protected int getDrawableColor(int position) {
GoogleTaskList list = lists.get(position);
int color = list.getColor();
return color >= 0
? themeCache.getThemeColor(color).getPrimaryColor()
: super.getDrawableColor(position);
}
};
int selectedIndex = selected == null ? -1 : listNames.indexOf(selected.getTitle());
return dialogBuilder.newDialog() return dialogBuilder.newDialog()
.setSingleChoiceItems(adapter, selectedIndex, (dialog, which) -> { .setSingleChoiceItems(filterAdapter, selectedIndex, (dialog, which) -> {
handler.selectedList(lists.get(which)); FilterListItem item = filterAdapter.getItem(which);
if (item instanceof GtasksFilter) {
handler.selectedList(((GtasksFilter) item).getList());
}
dialog.dismiss(); dialog.dismiss();
}) })
.show(); .show();

@ -274,7 +274,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
public void restart() { public void restart() {
Intent intent = getIntent(); Intent intent = getIntent();
intent.putExtra(TaskListActivity.OPEN_FILTER, getCurrentFilter()); intent.putExtra(TaskListActivity.OPEN_FILTER, filter);
finish(); finish();
startActivity(intent); startActivity(intent);
} }
@ -476,11 +476,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
@Override @Override
public void sortChanged() { public void sortChanged() {
localBroadcastManager.broadcastRefresh(); localBroadcastManager.broadcastRefresh();
onFilterItemClicked(getCurrentFilter()); onFilterItemClicked(filter);
}
public Filter getCurrentFilter() {
return filter;
} }
@Override @Override

@ -0,0 +1,41 @@
package com.todoroo.astrid.adapter;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.Checkable;
import android.widget.RelativeLayout;
public class CheckableRelativeLayout extends RelativeLayout implements Checkable {
private static final int[] CHECKED_STATE_SET = {android.R.attr.state_checked};
private boolean checked = false;
public CheckableRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean b) {
if (b != checked) {
checked = b;
refreshDrawableState();
}
}
public void toggle() {
setChecked(!checked);
}
@Override
public int[] onCreateDrawableState(int extraSpace) {
final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
if (isChecked()) {
mergeDrawableStates(drawableState, CHECKED_STATE_SET);
}
return drawableState;
}
}

@ -9,15 +9,20 @@ import android.app.Activity;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.res.ResourcesCompat;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.core.CustomFilterActivity; import com.todoroo.astrid.core.CustomFilterActivity;
@ -37,11 +42,13 @@ import org.tasks.themes.Theme;
import org.tasks.themes.ThemeCache; import org.tasks.themes.ThemeCache;
import org.tasks.ui.NavigationDrawerFragment; import org.tasks.ui.NavigationDrawerFragment;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import static android.support.v4.content.ContextCompat.getColor; import static android.support.v4.content.ContextCompat.getColor;
import static com.todoroo.andlib.utility.AndroidUtilities.preLollipop;
public class FilterAdapter extends ArrayAdapter<FilterListItem> { public class FilterAdapter extends ArrayAdapter<FilterListItem> {
@ -54,12 +61,15 @@ public class FilterAdapter extends ArrayAdapter<FilterListItem> {
private final FilterProvider filterProvider; private final FilterProvider filterProvider;
private final FilterCounter filterCounter; private final FilterCounter filterCounter;
private final Activity activity; private final Activity activity;
private final Theme theme;
private final Locale locale; private final Locale locale;
private final FilterListUpdateReceiver filterListUpdateReceiver = new FilterListUpdateReceiver(); private final FilterListUpdateReceiver filterListUpdateReceiver = new FilterListUpdateReceiver();
private final List<FilterListItem> items = new ArrayList<>();
private boolean navigationDrawer; private boolean navigationDrawer;
private boolean remoteListPicker;
private Filter selected;
/** layout inflater */
private final LayoutInflater inflater; private final LayoutInflater inflater;
private final ThemeCache themeCache; private final ThemeCache themeCache;
@ -70,6 +80,7 @@ public class FilterAdapter extends ArrayAdapter<FilterListItem> {
this.filterProvider = filterProvider; this.filterProvider = filterProvider;
this.filterCounter = filterCounter; this.filterCounter = filterCounter;
this.activity = activity; this.activity = activity;
this.theme = theme;
this.locale = locale; this.locale = locale;
this.inflater = theme.getLayoutInflater(activity); this.inflater = theme.getLayoutInflater(activity);
this.themeCache = themeCache; this.themeCache = themeCache;
@ -91,7 +102,9 @@ public class FilterAdapter extends ArrayAdapter<FilterListItem> {
@Override @Override
public void add(FilterListItem item) { public void add(FilterListItem item) {
super.add(item); super.add(item);
// load sizes
items.add(item);
if (navigationDrawer && item instanceof Filter) { if (navigationDrawer && item instanceof Filter) {
filterCounter.registerFilter((Filter) item); filterCounter.registerFilter((Filter) item);
} }
@ -118,6 +131,15 @@ public class FilterAdapter extends ArrayAdapter<FilterListItem> {
viewHolder.name = convertView.findViewById(R.id.name); viewHolder.name = convertView.findViewById(R.id.name);
viewHolder.icon = convertView.findViewById(R.id.icon); viewHolder.icon = convertView.findViewById(R.id.icon);
viewHolder.size = convertView.findViewById(R.id.size); viewHolder.size = convertView.findViewById(R.id.size);
if (preLollipop()) {
ColorStateList tintList = new ColorStateList(new int[][]{
new int[]{-android.R.attr.state_checked}, new int[]{android.R.attr.state_checked}},
new int[]{ResourcesCompat.getColor(activity.getResources(), android.R.color.transparent, null), theme.getThemeAccent().getAccentColor()});
Drawable original = ContextCompat.getDrawable(activity, R.drawable.ic_check_black_24dp);
Drawable wrapped = DrawableCompat.wrap(original.mutate());
DrawableCompat.setTintList(wrapped, tintList);
viewHolder.name.setCheckMarkDrawable(wrapped);
}
break; break;
case SEPARATOR: case SEPARATOR:
convertView = inflater.inflate(R.layout.filter_adapter_separator, parent, false); convertView = inflater.inflate(R.layout.filter_adapter_separator, parent, false);
@ -133,9 +155,21 @@ public class FilterAdapter extends ArrayAdapter<FilterListItem> {
return convertView; return convertView;
} }
public void setSelected(Filter selected) {
this.selected = selected;
}
public Filter getSelected() {
return selected;
}
public int indexOf(FilterListItem item) {
return items.indexOf(item);
}
public static class ViewHolder { public static class ViewHolder {
public FilterListItem item; public FilterListItem item;
public TextView name; public CheckedTextView name;
public ImageView icon; public ImageView icon;
public TextView size; public TextView size;
public View view; public View view;
@ -152,14 +186,6 @@ public class FilterAdapter extends ArrayAdapter<FilterListItem> {
switch(item.getItemType()) { switch(item.getItemType()) {
case ITEM: case ITEM:
populateItem(viewHolder); populateItem(viewHolder);
if (activity instanceof TaskListActivity) {
Filter selected = ((TaskListActivity) activity).getCurrentFilter();
if (selected != null && selected.equals(viewHolder.item)) {
convertView.setBackgroundColor(getColor(activity, R.color.drawer_color_selected));
}
}
break; break;
case SUBHEADER: case SUBHEADER:
populateHeader(viewHolder); populateHeader(viewHolder);
@ -214,6 +240,24 @@ public class FilterAdapter extends ArrayAdapter<FilterListItem> {
} }
} }
@Override
public void clear() {
super.clear();
items.clear();
}
public void populateRemoteListPicker() {
clear();
remoteListPicker = true;
for (Filter filter : filterProvider.getGoogleTaskFilters()) {
add(filter);
}
notifyDataSetChanged();
}
public void populateList() { public void populateList() {
clear(); clear();
@ -282,7 +326,12 @@ public class FilterAdapter extends ArrayAdapter<FilterListItem> {
return; return;
} }
viewHolder.view.setBackgroundResource(0); if (!remoteListPicker && selected != null && selected.equals(filter)) {
viewHolder.view.setBackgroundColor(getColor(activity, R.color.drawer_color_selected));
} else {
viewHolder.view.setBackgroundResource(0);
}
viewHolder.icon.setImageResource(filter.icon); viewHolder.icon.setImageResource(filter.icon);
viewHolder.icon.setColorFilter(filter.tint >= 0 viewHolder.icon.setColorFilter(filter.tint >= 0
? themeCache.getThemeColor(filter.tint).getPrimaryColor() ? themeCache.getThemeColor(filter.tint).getPrimaryColor()
@ -298,7 +347,7 @@ public class FilterAdapter extends ArrayAdapter<FilterListItem> {
countInt = filterCounter.get(filter); countInt = filterCounter.get(filter);
viewHolder.size.setText(locale.formatNumber(countInt)); viewHolder.size.setText(locale.formatNumber(countInt));
} }
viewHolder.size.setVisibility(countInt > 0 ? View.VISIBLE : View.INVISIBLE); viewHolder.size.setVisibility(countInt > 0 ? View.VISIBLE : View.GONE);
} }
private void populateHeader(ViewHolder viewHolder) { private void populateHeader(ViewHolder viewHolder) {

@ -21,7 +21,7 @@ public class GtasksFilter extends Filter {
private static final int CLOUD = R.drawable.ic_cloud_black_24dp; private static final int CLOUD = R.drawable.ic_cloud_black_24dp;
private long storeId; private GoogleTaskList list;
private GtasksFilter() { private GtasksFilter() {
super(); super();
@ -29,7 +29,7 @@ public class GtasksFilter extends Filter {
public GtasksFilter(GoogleTaskList list) { public GtasksFilter(GoogleTaskList list) {
super(list.getTitle(), getQueryTemplate(list), getValuesForNewTasks(list)); super(list.getTitle(), getQueryTemplate(list), getValuesForNewTasks(list));
storeId = list.getId(); this.list = list;
tint = list.getColor(); tint = list.getColor();
icon = CLOUD; icon = CLOUD;
} }
@ -43,7 +43,7 @@ public class GtasksFilter extends Filter {
} }
public long getStoreId() { public long getStoreId() {
return storeId; return list.getId();
} }
private static QueryTemplate getQueryTemplate(GoogleTaskList list) { private static QueryTemplate getQueryTemplate(GoogleTaskList list) {
@ -71,13 +71,13 @@ public class GtasksFilter extends Filter {
@Override @Override
public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags); super.writeToParcel(dest, flags);
dest.writeLong(storeId); dest.writeParcelable(list, 0);
} }
@Override @Override
protected void readFromParcel(Parcel source) { protected void readFromParcel(Parcel source) {
super.readFromParcel(source); super.readFromParcel(source);
storeId = source.readLong(); list = source.readParcelable(getClass().getClassLoader());
} }
/** /**
@ -103,4 +103,8 @@ public class GtasksFilter extends Filter {
return new GtasksFilter[size]; return new GtasksFilter[size];
} }
}; };
public GoogleTaskList getList() {
return list;
}
} }

@ -52,8 +52,6 @@ public class NavigationDrawerFragment extends InjectingFragment {
private ListView mDrawerListView; private ListView mDrawerListView;
private View mFragmentContainerView; private View mFragmentContainerView;
private Filter selected = null;
@Inject LocalBroadcastManager localBroadcastManager; @Inject LocalBroadcastManager localBroadcastManager;
@Inject FilterAdapter adapter; @Inject FilterAdapter adapter;
@ -62,7 +60,7 @@ public class NavigationDrawerFragment extends InjectingFragment {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (savedInstanceState != null) { if (savedInstanceState != null) {
selected = savedInstanceState.getParcelable(TOKEN_LAST_SELECTED); adapter.setSelected(savedInstanceState.getParcelable(TOKEN_LAST_SELECTED));
} }
} }
@ -141,7 +139,7 @@ public class NavigationDrawerFragment extends InjectingFragment {
} }
public void setSelected(Filter selected) { public void setSelected(Filter selected) {
this.selected = selected; adapter.setSelected(selected);
} }
@Override @Override
@ -161,8 +159,8 @@ public class NavigationDrawerFragment extends InjectingFragment {
private void selectItem(int position) { private void selectItem(int position) {
FilterListItem item = adapter.getItem(position); FilterListItem item = adapter.getItem(position);
if (item instanceof Filter) { if (item instanceof Filter) {
if (!item.equals(selected)) { if (!item.equals(adapter.getSelected())) {
selected = (Filter) item; adapter.setSelected((Filter) item);
if (mCallbacks != null) { if (mCallbacks != null) {
mCallbacks.onFilterItemClicked(item); mCallbacks.onFilterItemClicked(item);
} }
@ -197,7 +195,7 @@ public class NavigationDrawerFragment extends InjectingFragment {
@Override @Override
public void onSaveInstanceState(Bundle outState) { public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
outState.putParcelable(TOKEN_LAST_SELECTED, selected); outState.putParcelable(TOKEN_LAST_SELECTED, adapter.getSelected());
} }
public void closeDrawer() { public void closeDrawer() {

@ -1,10 +1,14 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <com.todoroo.astrid.adapter.CheckableRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:paddingTop="12dp"> android:paddingTop="12dp"
android:paddingLeft="@dimen/keyline_first"
android:paddingStart="@dimen/keyline_first"
android:paddingRight="0dp"
android:paddingEnd="0dp">
<TextView <TextView
android:id="@+id/size" android:id="@+id/size"
@ -13,13 +17,13 @@
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:paddingLeft="0dp"
android:paddingStart="0dp"
android:paddingRight="@dimen/keyline_first"
android:paddingEnd="@dimen/keyline_first"
android:gravity="end" android:gravity="end"
android:fontFamily="@string/font_fontFamily_medium" android:fontFamily="@string/font_fontFamily_medium"
android:minEms="3" android:minEms="3"
android:paddingEnd="@dimen/keyline_first"
android:paddingLeft="@dimen/keyline_first"
android:paddingRight="@dimen/keyline_first"
android:paddingStart="@dimen/keyline_first"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
tools:ignore="UnusedAttribute" /> tools:ignore="UnusedAttribute" />
@ -31,14 +35,10 @@
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:alpha="?attr/alpha_secondary" android:alpha="?attr/alpha_secondary"
android:paddingEnd="@dimen/keyline_second"
android:paddingLeft="@dimen/keyline_first"
android:paddingRight="@dimen/keyline_second"
android:paddingStart="@dimen/keyline_first"
android:scaleType="center" android:scaleType="center"
android:tint="?attr/icon_tint" /> android:tint="?attr/icon_tint" />
<TextView <CheckedTextView
android:id="@+id/name" android:id="@+id/name"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -47,10 +47,17 @@
android:layout_toLeftOf="@id/size" android:layout_toLeftOf="@id/size"
android:layout_toRightOf="@id/icon" android:layout_toRightOf="@id/icon"
android:layout_toStartOf="@id/size" android:layout_toStartOf="@id/size"
android:paddingLeft="@dimen/keyline_second"
android:paddingStart="@dimen/keyline_second"
android:paddingRight="@dimen/keyline_first"
android:paddingEnd="@dimen/keyline_first"
android:gravity="start" android:gravity="start"
android:duplicateParentState="true"
android:textAlignment="viewStart" android:textAlignment="viewStart"
android:checked="false" android:checked="false"
android:ellipsize="end" android:ellipsize="end"
android:checkMark="@drawable/checkmark"
android:checkMarkTint="?colorAccent"
android:fontFamily="@string/font_fontFamily_medium" android:fontFamily="@string/font_fontFamily_medium"
android:lines="1" android:lines="1"
android:singleLine="true" android:singleLine="true"
@ -58,4 +65,4 @@
android:textSize="14sp" android:textSize="14sp"
tools:ignore="UnusedAttribute" /> tools:ignore="UnusedAttribute" />
</RelativeLayout> </com.todoroo.astrid.adapter.CheckableRelativeLayout>

@ -11,7 +11,7 @@
style="@style/horizontal_divider" style="@style/horizontal_divider"
android:layout_gravity="top" /> android:layout_gravity="top" />
<TextView <CheckedTextView
android:paddingRight="0dp" android:paddingRight="0dp"
android:paddingEnd="0dp" android:paddingEnd="0dp"
android:paddingLeft="@dimen/keyline_first" android:paddingLeft="@dimen/keyline_first"
@ -26,6 +26,7 @@
android:textAlignment="viewStart" android:textAlignment="viewStart"
android:fontFamily="@string/font_fontFamily_medium" android:fontFamily="@string/font_fontFamily_medium"
android:alpha="0.54" android:alpha="0.54"
android:clickable="false"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_height="fill_parent"
tools:ignore="UnusedAttribute" /> tools:ignore="UnusedAttribute" />

Loading…
Cancel
Save