[android] Migrate bookmarks layouts to Material Components

Signed-off-by: Jean-Baptiste Charron <jeanbaptiste.charron@outlook.fr>
This commit is contained in:
Jean-Baptiste
2025-06-27 18:59:57 +02:00
committed by Konstantin Pastbin
parent b31819fcfb
commit 8db9289b56
22 changed files with 93 additions and 93 deletions

View File

@@ -11,7 +11,6 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -172,7 +171,7 @@ public class BookmarkCategorySettingsFragment extends BaseMwmToolbarFragment
return !TextUtils.equals(mCategory.getDescription(), categoryDesc);
}
private void clearAndFocus(TextView textView)
private void clearAndFocus(TextInputEditText textView)
{
textView.getEditableText().clear();
textView.requestFocus();

View File

@@ -4,12 +4,13 @@ import android.content.res.Resources;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.textview.MaterialTextView;
import app.organicmaps.R;
import app.organicmaps.bookmarks.data.BookmarkCategory;
import app.organicmaps.bookmarks.data.BookmarkInfo;
@@ -439,14 +440,14 @@ public class BookmarkListAdapter extends RecyclerView.Adapter<Holders.BaseBookma
holder = bookmarkHolder;
break;
case TYPE_SECTION:
TextView tv = (TextView) inflater.inflate(R.layout.item_category_title, parent, false);
MaterialTextView tv = (MaterialTextView) inflater.inflate(R.layout.item_category_title, parent, false);
holder = new Holders.SectionViewHolder(tv);
break;
case TYPE_DESC:
View desc = inflater.inflate(R.layout.item_category_description, parent, false);
TextView moreBtn = desc.findViewById(R.id.more_btn);
TextView text = desc.findViewById(R.id.text);
TextView title = desc.findViewById(R.id.title);
MaterialTextView moreBtn = desc.findViewById(R.id.more_btn);
MaterialTextView text = desc.findViewById(R.id.text);
MaterialTextView title = desc.findViewById(R.id.title);
setMoreButtonVisibility(text, moreBtn);
holder = new Holders.DescriptionViewHolder(desc, mSectionsDataSource.getCategory());
text.setOnClickListener(v -> onMoreButtonClicked(text, moreBtn));
@@ -537,12 +538,12 @@ public class BookmarkListAdapter extends RecyclerView.Adapter<Holders.BaseBookma
}
}
private void setMoreButtonVisibility(TextView text, TextView moreBtn)
private void setMoreButtonVisibility(MaterialTextView text, MaterialTextView moreBtn)
{
text.post(() -> setShortModeDescription(text, moreBtn));
}
private void onMoreButtonClicked(TextView textView, TextView moreBtn)
private void onMoreButtonClicked(MaterialTextView textView, MaterialTextView moreBtn)
{
if (isShortModeDescription(textView))
{
@@ -554,18 +555,18 @@ public class BookmarkListAdapter extends RecyclerView.Adapter<Holders.BaseBookma
}
}
private boolean isShortModeDescription(TextView text)
private boolean isShortModeDescription(MaterialTextView text)
{
return text.getMaxLines() == MAX_VISIBLE_LINES;
}
private void setExpandedModeDescription(TextView textView, TextView moreBtn)
private void setExpandedModeDescription(MaterialTextView textView, MaterialTextView moreBtn)
{
textView.setMaxLines(Integer.MAX_VALUE);
moreBtn.setVisibility(View.GONE);
}
private void setShortModeDescription(TextView textView, TextView moreBtn)
private void setShortModeDescription(MaterialTextView textView, MaterialTextView moreBtn)
{
textView.setMaxLines(MAX_VISIBLE_LINES);

View File

@@ -11,7 +11,6 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
@@ -53,6 +52,7 @@ import app.organicmaps.widget.placepage.BookmarkColorDialogFragment;
import app.organicmaps.widget.placepage.EditBookmarkFragment;
import app.organicmaps.widget.recycler.DividerItemDecorationWithPadding;
import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton;
import com.google.android.material.imageview.ShapeableImageView;
import java.util.ArrayList;
import java.util.List;
@@ -599,7 +599,7 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
i.putExtra(MwmActivity.EXTRA_BOOKMARK_ID, bookmark.getBookmarkId());
}
private void showColorDialog(ImageView v, int position)
private void showColorDialog(ShapeableImageView v, int position)
{
BookmarkListAdapter adapter = getBookmarkListAdapter();

View File

@@ -4,12 +4,13 @@ import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RadioButton;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.radiobutton.MaterialRadioButton;
import com.google.android.material.textview.MaterialTextView;
import app.organicmaps.R;
import app.organicmaps.bookmarks.data.BookmarkCategory;
@@ -101,8 +102,8 @@ public class ChooseBookmarkCategoryAdapter extends BaseBookmarkCategoryAdapter<C
static class SingleChoiceHolder extends RecyclerView.ViewHolder
{
TextView name;
RadioButton checked;
MaterialTextView name;
MaterialRadioButton checked;
public SingleChoiceHolder(View convertView)
{

View File

@@ -6,15 +6,16 @@ import android.location.Location;
import android.text.Spanned;
import android.text.TextUtils;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.PluralsRes;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.imageview.ShapeableImageView;
import com.google.android.material.textview.MaterialTextView;
import com.google.android.material.checkbox.MaterialCheckBox;
import app.organicmaps.R;
import app.organicmaps.adapter.OnItemClickListener;
import app.organicmaps.bookmarks.data.BookmarkCategory;
@@ -34,9 +35,9 @@ public class Holders
public static class GeneralViewHolder extends RecyclerView.ViewHolder
{
@NonNull
private final TextView mText;
private final MaterialTextView mText;
@NonNull
private final ImageView mImage;
private final ShapeableImageView mImage;
GeneralViewHolder(@NonNull View itemView)
{
@@ -46,13 +47,13 @@ public class Holders
}
@NonNull
public TextView getText()
public MaterialTextView getText()
{
return mText;
}
@NonNull
public ImageView getImage()
public ShapeableImageView getImage()
{
return mImage;
}
@@ -61,9 +62,9 @@ public class Holders
public static class HeaderViewHolder extends RecyclerView.ViewHolder
{
@NonNull
private final TextView mButton;
private final MaterialTextView mButton;
@NonNull
private final TextView mText;
private final MaterialTextView mText;
HeaderViewHolder(@NonNull View itemView)
@@ -74,13 +75,13 @@ public class Holders
}
@NonNull
public TextView getText()
public MaterialTextView getText()
{
return mText;
}
@NonNull
public TextView getButton()
public MaterialTextView getButton()
{
return mButton;
}
@@ -168,7 +169,7 @@ public class Holders
protected BookmarkCategory mEntity;
@NonNull
protected final TextView mSize;
protected final MaterialTextView mSize;
public CategoryViewHolderBase(@NonNull View root)
{
@@ -229,9 +230,9 @@ public class Holders
@NonNull
private final View mView;
@NonNull
private final TextView mName;
private final MaterialTextView mName;
@NonNull
private final CheckBox mVisibilityMarker;
private final MaterialCheckBox mVisibilityMarker;
CollectionViewHolder(@NonNull View root)
{
@@ -268,11 +269,11 @@ public class Holders
static class CategoryViewHolder extends CategoryViewHolderBase
{
@NonNull
private final TextView mName;
private final MaterialTextView mName;
@NonNull
CheckBox mVisibilityMarker;
MaterialCheckBox mVisibilityMarker;
@NonNull
ImageView mMoreButton;
ShapeableImageView mMoreButton;
CategoryViewHolder(@NonNull View root)
{
@@ -338,11 +339,11 @@ public class Holders
static class BookmarkViewHolder extends BaseBookmarkHolder
{
@NonNull
private final ImageView mIcon;
private final ShapeableImageView mIcon;
@NonNull
private final TextView mName;
private final MaterialTextView mName;
@NonNull
private final TextView mDistance;
private final MaterialTextView mDistance;
BookmarkViewHolder(@NonNull View itemView)
{
@@ -384,12 +385,12 @@ public class Holders
static class TrackViewHolder extends BaseBookmarkHolder
{
@NonNull
private final ImageView mIcon;
private final ShapeableImageView mIcon;
@NonNull
private final TextView mName;
private final MaterialTextView mName;
@NonNull
private final TextView mDistance;
private final ImageView mMoreButton;
private final MaterialTextView mDistance;
private final ShapeableImageView mMoreButton;
TrackViewHolder(@NonNull View itemView)
{
@@ -424,16 +425,16 @@ public class Holders
public void setTrackIconClickListener(IconClickListener listener)
{
mIcon.setOnClickListener(v -> listener.onItemClick((ImageView) v, getBindingAdapterPosition()));
mIcon.setOnClickListener(v -> listener.onItemClick((ShapeableImageView) v, getBindingAdapterPosition()));
}
}
public static class SectionViewHolder extends BaseBookmarkHolder
{
@NonNull
private final TextView mView;
private final MaterialTextView mView;
SectionViewHolder(@NonNull TextView itemView)
SectionViewHolder(@NonNull MaterialTextView itemView)
{
super(itemView);
mView = itemView;
@@ -452,9 +453,9 @@ public class Holders
static final float SPACING_MULTIPLE = 1.0f;
static final float SPACING_ADD = 0.0f;
@NonNull
private final TextView mTitle;
private final MaterialTextView mTitle;
@NonNull
private final TextView mDescText;
private final MaterialTextView mDescText;
DescriptionViewHolder(@NonNull View itemView, @NonNull BookmarkCategory category)
{

View File

@@ -6,7 +6,8 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import com.google.android.material.imageview.ShapeableImageView;
import app.organicmaps.R;
import app.organicmaps.bookmarks.data.Icon;
@@ -61,7 +62,7 @@ public class IconsAdapter extends ArrayAdapter<Icon>
private static class SpinnerViewHolder
{
final ImageView icon;
final ShapeableImageView icon;
SpinnerViewHolder(View convertView)
{

View File

@@ -1,8 +1,8 @@
package app.organicmaps.bookmarks.data;
import android.widget.ImageView;
import com.google.android.material.imageview.ShapeableImageView;
public interface IconClickListener
{
void onItemClick(ImageView v, int position);
void onItemClick(ShapeableImageView v, int position);
}

View File

@@ -9,8 +9,6 @@ import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -34,8 +32,10 @@ import app.organicmaps.util.UiUtils;
import app.organicmaps.util.WindowInsetUtils.PaddingInsetsListener;
import com.google.android.material.appbar.MaterialToolbar;
import com.google.android.material.imageview.ShapeableImageView;
import com.google.android.material.textfield.TextInputEditText;
import com.google.android.material.textfield.TextInputLayout;
import com.google.android.material.textview.MaterialTextView;
import java.util.List;
@@ -54,8 +54,8 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
private TextInputEditText mEtName;
@NonNull
private TextInputLayout clearNameBtn;
private TextView mTvBookmarkGroup;
private ImageView mIvColor;
private MaterialTextView mTvBookmarkGroup;
private ShapeableImageView mIvColor;
private BookmarkCategory mBookmarkCategory;
@Nullable
private Icon mIcon;
@@ -208,7 +208,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
ViewCompat.setOnApplyWindowInsetsListener(toolbar, PaddingInsetsListener.excludeBottom());
final ImageView imageView = toolbar.findViewById(R.id.save);
final ShapeableImageView imageView = toolbar.findViewById(R.id.save);
switch (mType)
{
case TYPE_BOOKMARK ->
@@ -412,7 +412,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
{
mListener = listener;
}
private void clearAndFocus(TextView textView)
private void clearAndFocus(TextInputEditText textView)
{
textView.getEditableText().clear();
textView.requestFocus();

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/visibility_selector"
android:insetLeft="12dp" />

View File

@@ -8,7 +8,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
<com.google.android.material.textview.MaterialTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:textAppearanceLarge"

View File

@@ -4,7 +4,7 @@
android:layout_height="wrap_content"
android:background="?clickableBackground">
<ImageView
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/iv__color"
android:layout_width="@dimen/track_circle_size"
android:layout_height="@dimen/track_circle_size"

View File

@@ -44,7 +44,7 @@
android:layout_below="@+id/ll__bookmark_name"
android:layout_marginStart="@dimen/margin_half"
android:layout_marginEnd="@dimen/margin_half">
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv__bookmark_set_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -52,7 +52,7 @@
android:layout_marginEnd="@dimen/margin_quadruple"
android:text="@string/list"
android:textAppearance="@style/MwmTextAppearance.Body3" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv__bookmark_set"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -73,7 +73,7 @@
android:layout_alignBottom="@id/tv__bookmark_set"
android:layout_marginEnd="@dimen/margin_quadruple"
android:background="@color/divider" />
<ImageView
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/iv__bookmark_color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@@ -12,7 +12,7 @@
android:layout_height="wrap_content"
android:theme="@style/MwmWidget.ToolbarTheme">
<ImageView
<com.google.android.material.imageview.ShapeableImageView
app:tint="@color/image_view"
android:id="@+id/save"
app:srcCompat="@drawable/ic_done"

View File

@@ -7,7 +7,7 @@
android:background="@drawable/bg_clickable_card"
android:paddingStart="@dimen/margin_base">
<ImageView
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/iv__bookmark_color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -22,14 +22,14 @@
android:layout_centerVertical="true"
android:layout_toEndOf="@id/iv__bookmark_color"
android:layout_toStartOf="@id/more">
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv__bookmark_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/MwmTextAppearance.Body1"/>
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv__bookmark_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@@ -10,14 +10,14 @@
android:paddingStart="@dimen/margin_quarter"
android:paddingEnd="@dimen/dp_0"
android:paddingVertical="@dimen/margin_half_plus">
<ImageView
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/image"
android:layout_width="@dimen/nav_icon_size"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
app:tint="?colorAccent"
tools:srcCompat="@drawable/ic_import" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@@ -6,17 +6,19 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_clickable_card">
<CheckBox
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/checkbox"
android:layout_width="@dimen/margin_double_plus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentTop="true"
android:layout_alignBottom="@id/bottom_line_container"
android:layout_margin="@dimen/margin_half"
android:padding="@dimen/margin_half"
android:background="@null"
android:button="@drawable/button_visibility_centre_inset"
android:button="@drawable/visibility_selector"
android:buttonTint="?accentColorSelector" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -36,7 +38,7 @@
android:paddingBottom="@dimen/margin_half_plus"
android:layout_toStartOf="@id/more"
android:orientation="horizontal">
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -46,7 +48,7 @@
android:textAppearance="@style/MwmTextAppearance.Body3"
tools:text="42000000" />
</LinearLayout>
<ImageView
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@@ -9,14 +9,14 @@
android:paddingStart="@dimen/margin_half_plus"
android:paddingEnd="@dimen/margin_half_plus">
<RadioButton
<com.google.android.material.radiobutton.MaterialRadioButton
android:id="@+id/rb__selected"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="false"
android:focusable="false"/>
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv__set_name"
android:layout_width="0dp"
android:layout_height="wrap_content"

View File

@@ -5,7 +5,7 @@
android:paddingStart="@dimen/margin_double"
android:paddingEnd="@dimen/margin_double"
android:layout_height="@dimen/height_block_base">
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/text"
android:layout_gravity="end|center_vertical"
android:layout_width="wrap_content"

View File

@@ -7,18 +7,17 @@
android:background="?clickableBackground"
android:gravity="center_vertical"
android:orientation="horizontal">
<CheckBox
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:padding="@dimen/margin_half"
android:layout_marginStart="@dimen/margin_half_plus"
android:layout_marginEnd="@dimen/margin_base_plus" />
android:layout_marginStart="@dimen/margin_half_double_plus"
android:layout_marginEnd="@dimen/margin_half_double_plus" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -28,7 +27,7 @@
android:singleLine="true"
android:textAppearance="?fontBody1"
tools:text="Bookmark name looooooooooooooooooongasdasdasd" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/size"
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@@ -10,7 +10,7 @@
android:paddingTop="@dimen/margin_half_plus"
android:paddingEnd="@dimen/margin_base"
android:paddingBottom="@dimen/margin_half_plus">
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/text_message"
style="?fontHeadline6"
android:layout_width="wrap_content"
@@ -20,7 +20,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="@string/categories" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/button"
style="?fontSubtitle2"
android:layout_width="wrap_content"

View File

@@ -6,7 +6,7 @@
android:background="?cardBackground"
android:padding="@dimen/margin_base">
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -19,7 +19,7 @@
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/title">
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -27,7 +27,7 @@
android:maxLines="3"
android:textAppearance="@style/MwmTextAppearance.Body3" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/more_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView
<com.google.android.material.textview.MaterialTextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text"
style="?fontHeadline6"