mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-06-05 21:59:27 +02:00
use the letter fastscroller at SelectContact activity and dialog
This commit is contained in:
@ -12,9 +12,9 @@ import android.view.Menu
|
|||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import androidx.appcompat.widget.SearchView
|
import androidx.appcompat.widget.SearchView
|
||||||
import androidx.core.view.MenuItemCompat
|
import androidx.core.view.MenuItemCompat
|
||||||
|
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
import com.simplemobiletools.commons.helpers.*
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS
|
|
||||||
import com.simplemobiletools.contacts.pro.R
|
import com.simplemobiletools.contacts.pro.R
|
||||||
import com.simplemobiletools.contacts.pro.adapters.SelectContactsAdapter
|
import com.simplemobiletools.contacts.pro.adapters.SelectContactsAdapter
|
||||||
import com.simplemobiletools.contacts.pro.dialogs.ChangeSortingDialog
|
import com.simplemobiletools.contacts.pro.dialogs.ChangeSortingDialog
|
||||||
@ -26,6 +26,8 @@ import com.simplemobiletools.contacts.pro.helpers.ContactsHelper
|
|||||||
import com.simplemobiletools.contacts.pro.helpers.getProperText
|
import com.simplemobiletools.contacts.pro.helpers.getProperText
|
||||||
import com.simplemobiletools.contacts.pro.models.Contact
|
import com.simplemobiletools.contacts.pro.models.Contact
|
||||||
import kotlinx.android.synthetic.main.activity_select_contact.*
|
import kotlinx.android.synthetic.main.activity_select_contact.*
|
||||||
|
import java.util.*
|
||||||
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
class SelectContactActivity : SimpleActivity() {
|
class SelectContactActivity : SimpleActivity() {
|
||||||
private var specialMimeType: String? = null
|
private var specialMimeType: String? = null
|
||||||
@ -41,7 +43,7 @@ class SelectContactActivity : SimpleActivity() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
setupPlaceholders()
|
setupViews()
|
||||||
|
|
||||||
handlePermission(PERMISSION_READ_CONTACTS) {
|
handlePermission(PERMISSION_READ_CONTACTS) {
|
||||||
if (it) {
|
if (it) {
|
||||||
@ -195,7 +197,7 @@ class SelectContactActivity : SimpleActivity() {
|
|||||||
|
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
updatePlaceholderVisibility(contacts)
|
updatePlaceholderVisibility(contacts)
|
||||||
SelectContactsAdapter(this, contacts, ArrayList(), false, select_contact_list, select_contact_fastscroller) {
|
SelectContactsAdapter(this, contacts, ArrayList(), false, select_contact_list) {
|
||||||
confirmSelection(it)
|
confirmSelection(it)
|
||||||
}.apply {
|
}.apply {
|
||||||
select_contact_list.adapter = this
|
select_contact_list.adapter = this
|
||||||
@ -205,9 +207,15 @@ class SelectContactActivity : SimpleActivity() {
|
|||||||
select_contact_list.scheduleLayoutAnimation()
|
select_contact_list.scheduleLayoutAnimation()
|
||||||
}
|
}
|
||||||
|
|
||||||
select_contact_fastscroller.setViews(select_contact_list) {
|
letter_fastscroller.setupWithRecyclerView(select_contact_list, { position ->
|
||||||
select_contact_fastscroller.updateBubbleText(contacts[it].getBubbleText())
|
try {
|
||||||
}
|
val name = contacts[position].getNameToDisplay()
|
||||||
|
val character = if (name.isNotEmpty()) name.substring(0, 1) else ""
|
||||||
|
FastScrollItemIndicator.Text(character.normalizeString().toUpperCase(Locale.getDefault()))
|
||||||
|
} catch (e: Exception) {
|
||||||
|
FastScrollItemIndicator.Text("")
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -231,25 +239,35 @@ class SelectContactActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupPlaceholders() {
|
private fun setupViews() {
|
||||||
|
val adjustedPrimaryColor = getAdjustedPrimaryColor()
|
||||||
select_contact_placeholder.setTextColor(config.textColor)
|
select_contact_placeholder.setTextColor(config.textColor)
|
||||||
select_contact_placeholder_2.setTextColor(getAdjustedPrimaryColor())
|
select_contact_placeholder_2.setTextColor(adjustedPrimaryColor)
|
||||||
select_contact_placeholder_2.underlineText()
|
select_contact_placeholder_2.underlineText()
|
||||||
select_contact_placeholder_2.setOnClickListener {
|
select_contact_placeholder_2.setOnClickListener {
|
||||||
FilterContactSourcesDialog(this) {
|
FilterContactSourcesDialog(this) {
|
||||||
initContacts()
|
initContacts()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
letter_fastscroller?.textColor = config.textColor.getColorStateList()
|
||||||
|
letter_fastscroller?.pressedTextColor = adjustedPrimaryColor
|
||||||
|
letter_fastscroller_thumb?.fontSize = getTextSize()
|
||||||
|
letter_fastscroller_thumb?.textColor = adjustedPrimaryColor.getContrastColor()
|
||||||
|
letter_fastscroller_thumb?.thumbColor = adjustedPrimaryColor.getColorStateList()
|
||||||
|
letter_fastscroller_thumb.setupWithFastScroller(letter_fastscroller)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updatePlaceholderVisibility(contacts: ArrayList<Contact>) {
|
private fun updatePlaceholderVisibility(contacts: ArrayList<Contact>) {
|
||||||
select_contact_list.beVisibleIf(contacts.isNotEmpty())
|
select_contact_list.beVisibleIf(contacts.isNotEmpty())
|
||||||
select_contact_placeholder_2.beVisibleIf(contacts.isEmpty())
|
select_contact_placeholder_2.beVisibleIf(contacts.isEmpty())
|
||||||
select_contact_placeholder.beVisibleIf(contacts.isEmpty())
|
select_contact_placeholder.beVisibleIf(contacts.isEmpty())
|
||||||
select_contact_placeholder.setText(when (specialMimeType) {
|
select_contact_placeholder.setText(
|
||||||
Email.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_emails
|
when (specialMimeType) {
|
||||||
Phone.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_phone_numbers
|
Email.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_emails
|
||||||
else -> R.string.no_contacts_found
|
Phone.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_phone_numbers
|
||||||
})
|
else -> R.string.no_contacts_found
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,6 @@ import com.bumptech.glide.request.RequestOptions
|
|||||||
import com.bumptech.glide.signature.ObjectKey
|
import com.bumptech.glide.signature.ObjectKey
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
|
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
|
||||||
import com.simplemobiletools.commons.views.FastScroller
|
|
||||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
import com.simplemobiletools.contacts.pro.R
|
import com.simplemobiletools.contacts.pro.R
|
||||||
import com.simplemobiletools.contacts.pro.activities.SimpleActivity
|
import com.simplemobiletools.contacts.pro.activities.SimpleActivity
|
||||||
@ -21,9 +20,11 @@ import com.simplemobiletools.contacts.pro.models.Contact
|
|||||||
import kotlinx.android.synthetic.main.item_add_favorite_with_number.view.*
|
import kotlinx.android.synthetic.main.item_add_favorite_with_number.view.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayList<Contact>, private val selectedContacts: ArrayList<Contact>, private val allowPickMultiple: Boolean,
|
class SelectContactsAdapter(
|
||||||
recyclerView: MyRecyclerView, val fastScroller: FastScroller, private val itemClick: ((Contact) -> Unit)? = null) :
|
val activity: SimpleActivity, var contacts: ArrayList<Contact>, private val selectedContacts: ArrayList<Contact>, private val allowPickMultiple: Boolean,
|
||||||
RecyclerView.Adapter<SelectContactsAdapter.ViewHolder>() {
|
recyclerView: MyRecyclerView, private val itemClick: ((Contact) -> Unit)? = null
|
||||||
|
) :
|
||||||
|
RecyclerView.Adapter<SelectContactsAdapter.ViewHolder>() {
|
||||||
private val itemViews = SparseArray<View>()
|
private val itemViews = SparseArray<View>()
|
||||||
private val selectedPositions = HashSet<Int>()
|
private val selectedPositions = HashSet<Int>()
|
||||||
private val config = activity.config
|
private val config = activity.config
|
||||||
@ -87,7 +88,6 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis
|
|||||||
textToHighlight = highlightText
|
textToHighlight = highlightText
|
||||||
notifyDataSetChanged()
|
notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
fastScroller.measureRecyclerView()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewRecycled(holder: ViewHolder) {
|
override fun onViewRecycled(holder: ViewHolder) {
|
||||||
@ -124,7 +124,8 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis
|
|||||||
}
|
}
|
||||||
|
|
||||||
val numberText = phoneNumberToUse?.value ?: ""
|
val numberText = phoneNumberToUse?.value ?: ""
|
||||||
contact_number.text = if (textToHighlight.isEmpty()) numberText else numberText.highlightTextPart(textToHighlight, adjustedPrimaryColor, false, true)
|
contact_number.text =
|
||||||
|
if (textToHighlight.isEmpty()) numberText else numberText.highlightTextPart(textToHighlight, adjustedPrimaryColor, false, true)
|
||||||
contact_number.setTextColor(textColor)
|
contact_number.setTextColor(textColor)
|
||||||
contact_number.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize)
|
contact_number.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize)
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,23 @@
|
|||||||
package com.simplemobiletools.contacts.pro.dialogs
|
package com.simplemobiletools.contacts.pro.dialogs
|
||||||
|
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.commons.extensions.areSystemAnimationsEnabled
|
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
||||||
import com.simplemobiletools.contacts.pro.R
|
import com.simplemobiletools.contacts.pro.R
|
||||||
import com.simplemobiletools.contacts.pro.activities.SimpleActivity
|
import com.simplemobiletools.contacts.pro.activities.SimpleActivity
|
||||||
import com.simplemobiletools.contacts.pro.adapters.SelectContactsAdapter
|
import com.simplemobiletools.contacts.pro.adapters.SelectContactsAdapter
|
||||||
|
import com.simplemobiletools.contacts.pro.extensions.config
|
||||||
import com.simplemobiletools.contacts.pro.extensions.getVisibleContactSources
|
import com.simplemobiletools.contacts.pro.extensions.getVisibleContactSources
|
||||||
import com.simplemobiletools.contacts.pro.models.Contact
|
import com.simplemobiletools.contacts.pro.models.Contact
|
||||||
import kotlinx.android.synthetic.main.layout_select_contact.view.*
|
import kotlinx.android.synthetic.main.layout_select_contact.view.*
|
||||||
|
import java.util.*
|
||||||
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayList<Contact>, val allowSelectMultiple: Boolean, val showOnlyContactsWithNumber: Boolean,
|
class SelectContactsDialog(
|
||||||
selectContacts: ArrayList<Contact>? = null, val callback: (addedContacts: ArrayList<Contact>, removedContacts: ArrayList<Contact>) -> Unit) {
|
val activity: SimpleActivity, initialContacts: ArrayList<Contact>, val allowSelectMultiple: Boolean, val showOnlyContactsWithNumber: Boolean,
|
||||||
|
selectContacts: ArrayList<Contact>? = null, val callback: (addedContacts: ArrayList<Contact>, removedContacts: ArrayList<Contact>) -> Unit
|
||||||
|
) {
|
||||||
private var dialog: AlertDialog? = null
|
private var dialog: AlertDialog? = null
|
||||||
private var view = activity.layoutInflater.inflate(R.layout.layout_select_contact, null)
|
private var view = activity.layoutInflater.inflate(R.layout.layout_select_contact, null)
|
||||||
private var initiallySelectedContacts = ArrayList<Contact>()
|
private var initiallySelectedContacts = ArrayList<Contact>()
|
||||||
@ -32,35 +37,33 @@ class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayL
|
|||||||
initiallySelectedContacts = selectContacts
|
initiallySelectedContacts = selectContacts
|
||||||
}
|
}
|
||||||
|
|
||||||
activity.runOnUiThread {
|
// if selecting multiple contacts is disabled, react on first contact click and dismiss the dialog
|
||||||
// if selecting multiple contacts is disabled, react on first contact click and dismiss the dialog
|
val contactClickCallback: ((Contact) -> Unit)? = if (allowSelectMultiple) null else { contact ->
|
||||||
val contactClickCallback: ((Contact) -> Unit)? = if (allowSelectMultiple) null else { contact ->
|
callback(arrayListOf(contact), arrayListOf())
|
||||||
callback(arrayListOf(contact), arrayListOf())
|
dialog!!.dismiss()
|
||||||
dialog!!.dismiss()
|
}
|
||||||
|
|
||||||
|
view.apply {
|
||||||
|
select_contact_list.adapter = SelectContactsAdapter(
|
||||||
|
activity, allContacts, initiallySelectedContacts, allowSelectMultiple,
|
||||||
|
select_contact_list, contactClickCallback
|
||||||
|
)
|
||||||
|
|
||||||
|
if (context.areSystemAnimationsEnabled) {
|
||||||
|
select_contact_list.scheduleLayoutAnimation()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
view.apply {
|
setupFastscroller(allContacts)
|
||||||
select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, initiallySelectedContacts, allowSelectMultiple,
|
|
||||||
select_contact_list, select_contact_fastscroller, contactClickCallback)
|
|
||||||
|
|
||||||
if (context.areSystemAnimationsEnabled) {
|
val builder = AlertDialog.Builder(activity)
|
||||||
select_contact_list.scheduleLayoutAnimation()
|
if (allowSelectMultiple) {
|
||||||
}
|
builder.setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() }
|
||||||
|
}
|
||||||
|
builder.setNegativeButton(R.string.cancel, null)
|
||||||
|
|
||||||
select_contact_fastscroller.setViews(select_contact_list) {
|
dialog = builder.create().apply {
|
||||||
select_contact_fastscroller.updateBubbleText(allContacts[it].getBubbleText())
|
activity.setupDialogStuff(view, this)
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val builder = AlertDialog.Builder(activity)
|
|
||||||
if (allowSelectMultiple) {
|
|
||||||
builder.setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() }
|
|
||||||
}
|
|
||||||
builder.setNegativeButton(R.string.cancel, null)
|
|
||||||
|
|
||||||
dialog = builder.create().apply {
|
|
||||||
activity.setupDialogStuff(view, this)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,4 +77,26 @@ class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayL
|
|||||||
callback(newlySelectedContacts, unselectedContacts)
|
callback(newlySelectedContacts, unselectedContacts)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupFastscroller(allContacts: ArrayList<Contact>) {
|
||||||
|
val adjustedPrimaryColor = activity.getAdjustedPrimaryColor()
|
||||||
|
view.apply {
|
||||||
|
letter_fastscroller?.textColor = context.config.textColor.getColorStateList()
|
||||||
|
letter_fastscroller?.pressedTextColor = adjustedPrimaryColor
|
||||||
|
letter_fastscroller_thumb?.fontSize = context.getTextSize()
|
||||||
|
letter_fastscroller_thumb?.textColor = adjustedPrimaryColor.getContrastColor()
|
||||||
|
letter_fastscroller_thumb?.thumbColor = adjustedPrimaryColor.getColorStateList()
|
||||||
|
letter_fastscroller_thumb.setupWithFastScroller(letter_fastscroller)
|
||||||
|
}
|
||||||
|
|
||||||
|
view.letter_fastscroller.setupWithRecyclerView(view.select_contact_list, { position ->
|
||||||
|
try {
|
||||||
|
val name = allContacts[position].getNameToDisplay()
|
||||||
|
val character = if (name.isNotEmpty()) name.substring(0, 1) else ""
|
||||||
|
FastScrollItemIndicator.Text(character.normalizeString().toUpperCase(Locale.getDefault()))
|
||||||
|
} catch (e: Exception) {
|
||||||
|
FastScrollItemIndicator.Text("")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -243,14 +243,15 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun setupLetterFastscroller(contacts: ArrayList<Contact>) {
|
private fun setupLetterFastscroller(contacts: ArrayList<Contact>) {
|
||||||
|
val sorting = context.config.sorting
|
||||||
letter_fastscroller.setupWithRecyclerView(fragment_list, { position ->
|
letter_fastscroller.setupWithRecyclerView(fragment_list, { position ->
|
||||||
try {
|
try {
|
||||||
val contact = contacts[position]
|
val contact = contacts[position]
|
||||||
var name = when {
|
var name = when {
|
||||||
contact.isABusinessContact() -> contact.getFullCompany()
|
contact.isABusinessContact() -> contact.getFullCompany()
|
||||||
context.config.sorting and SORT_BY_SURNAME != 0 && contact.surname.isNotEmpty() -> contact.surname
|
sorting and SORT_BY_SURNAME != 0 && contact.surname.isNotEmpty() -> contact.surname
|
||||||
context.config.sorting and SORT_BY_MIDDLE_NAME != 0 && contact.middleName.isNotEmpty() -> contact.middleName
|
sorting and SORT_BY_MIDDLE_NAME != 0 && contact.middleName.isNotEmpty() -> contact.middleName
|
||||||
context.config.sorting and SORT_BY_FIRST_NAME != 0 && contact.firstName.isNotEmpty() -> contact.firstName
|
sorting and SORT_BY_FIRST_NAME != 0 && contact.firstName.isNotEmpty() -> contact.firstName
|
||||||
context.config.startNameWithSurname -> contact.surname
|
context.config.startNameWithSurname -> contact.surname
|
||||||
else -> contact.firstName
|
else -> contact.firstName
|
||||||
}
|
}
|
||||||
|
@ -42,16 +42,21 @@
|
|||||||
android:scrollbars="none"
|
android:scrollbars="none"
|
||||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
|
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.FastScroller
|
<com.reddit.indicatorfastscroll.FastScrollerView
|
||||||
android:id="@+id/select_contact_fastscroller"
|
android:id="@+id/letter_fastscroller"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="32dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignTop="@+id/select_contact_list"
|
|
||||||
android:layout_alignBottom="@+id/select_contact_list"
|
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:paddingStart="@dimen/normal_margin">
|
android:paddingTop="@dimen/big_margin"
|
||||||
|
android:paddingBottom="@dimen/big_margin" />
|
||||||
|
|
||||||
<include layout="@layout/fastscroller_handle_vertical" />
|
<com.reddit.indicatorfastscroll.FastScrollerThumbView
|
||||||
|
android:id="@+id/letter_fastscroller_thumb"
|
||||||
|
android:layout_width="@dimen/fab_size"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_alignTop="@+id/letter_fastscroller"
|
||||||
|
android:layout_alignBottom="@+id/letter_fastscroller"
|
||||||
|
android:layout_marginEnd="@dimen/activity_margin"
|
||||||
|
android:layout_toStartOf="@+id/letter_fastscroller" />
|
||||||
|
|
||||||
</com.simplemobiletools.commons.views.FastScroller>
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
@ -11,19 +11,25 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
android:layoutAnimation="@anim/layout_animation"
|
android:layoutAnimation="@anim/layout_animation"
|
||||||
|
android:paddingEnd="@dimen/big_margin"
|
||||||
android:scrollbars="none"
|
android:scrollbars="none"
|
||||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
|
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.FastScroller
|
<com.reddit.indicatorfastscroll.FastScrollerView
|
||||||
android:id="@+id/select_contact_fastscroller"
|
android:id="@+id/letter_fastscroller"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="32dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignTop="@+id/select_contact_list"
|
|
||||||
android:layout_alignBottom="@+id/select_contact_list"
|
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:paddingStart="@dimen/normal_margin">
|
android:paddingTop="@dimen/big_margin"
|
||||||
|
android:paddingBottom="@dimen/big_margin" />
|
||||||
|
|
||||||
<include layout="@layout/fastscroller_handle_vertical" />
|
<com.reddit.indicatorfastscroll.FastScrollerThumbView
|
||||||
|
android:id="@+id/letter_fastscroller_thumb"
|
||||||
|
android:layout_width="@dimen/fab_size"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_alignTop="@+id/letter_fastscroller"
|
||||||
|
android:layout_alignBottom="@+id/letter_fastscroller"
|
||||||
|
android:layout_marginEnd="@dimen/activity_margin"
|
||||||
|
android:layout_toStartOf="@+id/letter_fastscroller" />
|
||||||
|
|
||||||
</com.simplemobiletools.commons.views.FastScroller>
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
Reference in New Issue
Block a user