Skip to content
Snippets Groups Projects
Unverified Commit 418b73fd authored by axelherbstreith's avatar axelherbstreith Committed by GitHub
Browse files

Custom View for Detailed Information (EXPOSUREAPP-5488) (#2562)


* added custom view

* linting

* refactoring

* renaming ids

* refactoing

* added optional top divider

* linting

* added optional bottom divider, changed styling

* updated layout

* linting

Co-authored-by: default avatarMatthias Urhahn <matthias.urhahn@sap.com>
parent a7a235f2
No related branches found
No related tags found
No related merge requests found
...@@ -34,7 +34,7 @@ class DebugLogUploadFragment : Fragment(R.layout.bugreporting_debuglog_upload_fr ...@@ -34,7 +34,7 @@ class DebugLogUploadFragment : Fragment(R.layout.bugreporting_debuglog_upload_fr
vm.onUploadLog() vm.onUploadLog()
} }
debugLogSharePrivacyInformation.setOnClickListener { debugLogPrivacyInformation.setOnClickListener {
vm.onPrivacyButtonPress() vm.onPrivacyButtonPress()
} }
......
package de.rki.coronawarnapp.util.ui.views
import android.content.Context
import android.util.AttributeSet
import android.util.TypedValue
import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.withStyledAttributes
import androidx.core.view.isVisible
import de.rki.coronawarnapp.R
import de.rki.coronawarnapp.databinding.ViewMoreInformationBinding
class MoreInformationView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {
private val binding: ViewMoreInformationBinding
init {
LayoutInflater.from(context).inflate(R.layout.view_more_information, this, true)
val outValue = TypedValue()
getContext().theme.resolveAttribute(android.R.attr.selectableItemBackground, outValue, true)
setBackgroundResource(outValue.resourceId)
binding = ViewMoreInformationBinding.bind(this)
context.withStyledAttributes(attrs, R.styleable.MoreInformationView) {
val titleText = getText(R.styleable.MoreInformationView_titleText) ?: ""
val subtitleText = getText(R.styleable.MoreInformationView_subtitleText) ?: ""
val isTopDividerVisible = getBoolean(R.styleable.MoreInformationView_isTopDividerVisible, true)
val isBottomDividerVisible = getBoolean(R.styleable.MoreInformationView_isBottomDividerVisible, true)
binding.apply {
topDivider.isVisible = isTopDividerVisible
bottomDivider.isVisible = isBottomDividerVisible
moreInformationTitle.text = titleText
moreInformationTitle.isVisible = titleText.isNotEmpty()
moreInformationSubtitle.text = subtitleText
moreInformationSubtitle.isVisible = subtitleText.isNotEmpty()
}
}
}
}
...@@ -24,124 +24,65 @@ ...@@ -24,124 +24,65 @@
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginBottom="12dp" android:layout_marginBottom="12dp"
android:clipToPadding="false" android:clipToPadding="false"
android:paddingBottom="32dp" android:paddingBottom="8dp"
app:layout_constraintBottom_toTopOf="@id/log_control_container" app:layout_constraintBottom_toTopOf="@id/log_control_container"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar"> app:layout_constraintTop_toBottomOf="@id/toolbar">
<androidx.constraintlayout.widget.ConstraintLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp"> android:layout_height="0dp"
android:orientation="vertical">
<TextView <TextView
android:id="@+id/explanation_section_one" android:id="@+id/explanation_section_one"
style="@style/body1" style="@style/body1"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="24dp" android:layout_marginHorizontal="24dp"
android:padding="16dp" android:layout_marginTop="24dp"
android:text="@string/debugging_debuglog_intro_explanation_section_one" android:text="@string/debugging_debuglog_intro_explanation_section_one" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/explanation_section_two" android:id="@+id/explanation_section_two"
style="@style/body1" style="@style/body1"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="24dp" android:layout_marginHorizontal="24dp"
android:text="@string/debugging_debuglog_intro_explanation_section_two" android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent" android:text="@string/debugging_debuglog_intro_explanation_section_two" />
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/explanation_section_one" />
<include <include
android:id="@+id/debug_log_privacy_card" android:id="@+id/debug_log_privacy_card"
layout="@layout/include_debuglog_privacy_card" layout="@layout/include_debuglog_privacy_card"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/guideline_card" android:layout_marginHorizontal="@dimen/guideline_card"
android:layout_marginTop="16dp" android:layout_marginVertical="24dp"
android:focusable="true" android:focusable="true" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/explanation_section_two" />
<androidx.constraintlayout.widget.ConstraintLayout <de.rki.coronawarnapp.util.ui.views.MoreInformationView
android:id="@+id/debug_log_history_container" android:id="@+id/debug_log_history_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/debug_log_privacy_card">
<TextView
android:id="@+id/log_history_title"
style="@style/body1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24dp"
android:text="@string/debugging_debuglog_id_history_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/log_history_body"
style="@style/TextAppearance.AppCompat.Caption"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="4dp"
android:text="@string/debugging_debuglog_id_history_body"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/log_history_title" />
</androidx.constraintlayout.widget.ConstraintLayout>
<View
android:id="@+id/debug_log_first_divider"
android:layout_width="0dp"
android:layout_height="@dimen/card_divider"
android:layout_marginHorizontal="24dp" android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp" android:focusable="true"
android:background="?android:attr/listDivider" android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent" app:isBottomDividerVisible="false"
app:layout_constraintStart_toStartOf="parent" app:subtitleText="@string/debugging_debuglog_id_history_body"
app:layout_constraintTop_toBottomOf="@id/debug_log_history_container" /> app:titleText="@string/debugging_debuglog_id_history_title"
tools:visibility="visible" />
<TextView <de.rki.coronawarnapp.util.ui.views.MoreInformationView
android:id="@+id/debug_log_privacy_information" android:id="@+id/debug_log_privacy_information"
style="@style/subtitle" android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp" android:layout_marginHorizontal="24dp"
android:background="?selectableItemBackground"
android:clickable="true"
android:focusable="true" android:focusable="true"
android:paddingVertical="8dp" app:titleText="@string/contact_diary_onboarding_legal_information" />
android:text="@string/contact_diary_onboarding_legal_information"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/debug_log_first_divider"
tools:text="@string/contact_diary_onboarding_legal_information" />
<View
android:id="@+id/debug_log_second_divider"
android:layout_width="0dp"
android:layout_height="@dimen/card_divider"
android:layout_marginHorizontal="24dp"
android:layout_marginBottom="24dp"
android:background="?android:attr/listDivider"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/debug_log_privacy_information" />
</androidx.constraintlayout.widget.ConstraintLayout> </LinearLayout>
</ScrollView> </ScrollView>
...@@ -150,9 +91,10 @@ ...@@ -150,9 +91,10 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/colorSurface1" android:background="@color/colorSurface1"
android:elevation="8dp"
android:orientation="vertical" android:orientation="vertical"
android:paddingStart="24dp" android:paddingStart="24dp"
android:paddingTop="16dp" android:paddingTop="8dp"
android:paddingEnd="24dp" android:paddingEnd="24dp"
android:paddingBottom="16dp" android:paddingBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
...@@ -164,27 +106,31 @@ ...@@ -164,27 +106,31 @@
style="@style/headline5" style="@style/headline5"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="16dp" android:layout_marginBottom="8dp"
android:accessibilityHeading="true" android:accessibilityHeading="true"
android:focusable="true" android:focusable="true"
android:text="@string/debugging_debuglog_current_status_title" /> android:text="@string/debugging_debuglog_current_status_title" />
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/debug_log_current_status_card" android:id="@+id/debug_log_current_status_card"
style="@style/cardTracing"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="16dp"> android:layout_marginBottom="16dp"
android:background="@drawable/card"
android:backgroundTint="@color/colorSurface2"
android:minHeight="64dp">
<ImageView <ImageView
android:id="@+id/debuglog_activity_indicator" android:id="@+id/debuglog_activity_indicator"
android:layout_width="36dp" android:layout_width="36dp"
android:layout_height="36dp" android:layout_height="36dp"
android:layout_marginVertical="8dp"
android:layout_marginStart="16dp"
android:importantForAccessibility="no" android:importantForAccessibility="no"
android:src="@drawable/ic_debug_log_indicator_deactivated" android:src="@drawable/ic_debug_log_indicator_deactivated"
app:layout_constraintBottom_toBottomOf="@id/debuglog_status_secondary" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/debuglog_status_primary" app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_debug_log_indicator_deactivated" /> tools:src="@drawable/ic_debug_log_indicator_deactivated" />
<TextView <TextView
...@@ -193,9 +139,13 @@ ...@@ -193,9 +139,13 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
app:layout_constraintBottom_toTopOf="@id/debuglog_status_secondary"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/debuglog_activity_indicator" app:layout_constraintStart_toEndOf="@id/debuglog_activity_indicator"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="@string/debugging_debuglog_status_not_recording" /> tools:text="@string/debugging_debuglog_status_not_recording" />
<TextView <TextView
...@@ -204,6 +154,9 @@ ...@@ -204,6 +154,9 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/debuglog_activity_indicator" app:layout_constraintStart_toEndOf="@id/debuglog_activity_indicator"
app:layout_constraintTop_toBottomOf="@id/debuglog_status_primary" app:layout_constraintTop_toBottomOf="@id/debuglog_status_primary"
...@@ -216,7 +169,7 @@ ...@@ -216,7 +169,7 @@
style="@style/buttonPrimary" style="@style/buttonPrimary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="16dp" android:layout_marginBottom="8dp"
android:text="@string/debugging_debuglog_action_share_log" android:text="@string/debugging_debuglog_action_share_log"
tools:text="@string/debugging_debuglog_action_share_log" /> tools:text="@string/debugging_debuglog_action_share_log" />
...@@ -225,7 +178,7 @@ ...@@ -225,7 +178,7 @@
style="@style/buttonPrimary" style="@style/buttonPrimary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="16dp" android:layout_marginBottom="8dp"
android:text="@string/debugging_debuglog_action_local_log_store" android:text="@string/debugging_debuglog_action_local_log_store"
tools:text="@string/debugging_debuglog_action_local_log_store" /> tools:text="@string/debugging_debuglog_action_local_log_store" />
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:bind="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_container" android:id="@+id/content_container"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -29,101 +28,53 @@ ...@@ -29,101 +28,53 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar"> app:layout_constraintTop_toBottomOf="@id/toolbar">
<androidx.constraintlayout.widget.ConstraintLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:orientation="vertical">
<TextView <TextView
android:id="@+id/bugreporting_share_log_body_one" android:id="@+id/bugreporting_share_log_body_one"
style="@style/subtitle" style="@style/subtitle"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_normal" android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
android:focusable="true" android:focusable="true"
android:text="@string/debugging_debuglog_share_log_section_one" android:text="@string/debugging_debuglog_share_log_section_one"
app:layout_constraintEnd_toEndOf="@id/guideline_end"
app:layout_constraintStart_toStartOf="@id/guideline_start"
app:layout_constraintTop_toTopOf="parent"
tools:text="@string/debugging_debuglog_share_log_section_one" /> tools:text="@string/debugging_debuglog_share_log_section_one" />
<TextView <TextView
android:id="@+id/bugreporting_share_log_body_two" android:id="@+id/bugreporting_share_log_body_two"
style="@style/subtitle" style="@style/subtitle"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_normal" android:layout_marginHorizontal="24dp"
android:layout_marginTop="16dp"
android:focusable="true" android:focusable="true"
android:text="@string/debugging_debuglog_share_log_section_two" android:text="@string/debugging_debuglog_share_log_section_two"
app:layout_constraintEnd_toEndOf="@id/guideline_end"
app:layout_constraintStart_toStartOf="@id/guideline_start"
app:layout_constraintTop_toBottomOf="@id/bugreporting_share_log_body_one"
tools:text="@string/debugging_debuglog_share_log_section_two" /> tools:text="@string/debugging_debuglog_share_log_section_two" />
<include <include
android:id="@+id/bugreporting_share_log_privacy_card" android:id="@+id/bugreporting_share_log_privacy_card"
layout="@layout/include_debugging_debuglog_share_privacy_card" layout="@layout/include_debugging_debuglog_share_privacy_card"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/guideline_card" android:layout_marginHorizontal="@dimen/guideline_card"
android:layout_marginTop="@dimen/spacing_normal" android:layout_marginVertical="24dp"
android:focusable="true" android:focusable="true" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/bugreporting_share_log_body_two" />
<View
android:id="@+id/bugreporting_share_log_first_divider"
android:layout_width="0dp"
android:layout_height="@dimen/card_divider"
android:layout_marginTop="@dimen/spacing_small"
android:background="?android:attr/listDivider"
app:layout_constraintEnd_toStartOf="@id/guideline_end"
app:layout_constraintStart_toStartOf="@id/guideline_start"
app:layout_constraintTop_toBottomOf="@id/bugreporting_share_log_privacy_card" />
<TextView <de.rki.coronawarnapp.util.ui.views.MoreInformationView
android:id="@+id/debug_log_share_privacy_information" android:id="@+id/debug_log_privacy_information"
style="@style/subtitle" android:layout_marginHorizontal="24dp"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?selectableItemBackground"
android:clickable="true"
android:focusable="true" android:focusable="true"
android:paddingVertical="@dimen/spacing_tiny" app:titleText="@string/debugging_debuglog_share_log_privacy_information" />
android:text="@string/debugging_debuglog_share_log_privacy_information"
app:layout_constraintEnd_toEndOf="@id/guideline_end"
app:layout_constraintStart_toStartOf="@id/guideline_start"
app:layout_constraintTop_toBottomOf="@id/bugreporting_share_log_first_divider"
tools:text="@string/debugging_debuglog_share_log_privacy_information" />
<View
android:id="@+id/bugreporting_share_log_second_divider"
android:layout_width="0dp"
android:layout_height="@dimen/card_divider"
android:background="?android:attr/listDivider"
app:layout_constraintBottom_toBottomOf="parent"
bind:layout_constraintEnd_toStartOf="@id/guideline_end"
bind:layout_constraintStart_toStartOf="@id/guideline_start"
bind:layout_constraintTop_toBottomOf="@id/debug_log_share_privacy_information" />
<androidx.constraintlayout.widget.Guideline </LinearLayout>
android:id="@+id/guideline_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_begin="@dimen/guideline_start" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_end="@dimen/guideline_end" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView> </ScrollView>
<android.widget.Button <android.widget.Button
android:id="@+id/upload_action" android:id="@+id/upload_action"
style="@style/buttonPrimary" style="@style/buttonPrimary"
......
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:layout_width="match_parent"
tools:layout_height="wrap_content"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<View
android:id="@+id/top_divider"
android:layout_width="match_parent"
android:layout_height="@dimen/card_divider"
android:background="@color/colorHairline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/more_information_title"
style="@style/subtitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintBottom_toTopOf="@id/more_information_subtitle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_goneMarginBottom="16dp"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Custom Title (is mandatory)" />
<TextView
android:id="@+id/more_information_subtitle"
style="@style/TextAppearance.AppCompat.Caption"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/more_information_title"
tools:text="Custom Subtitle (is optional)" />
<View
android:id="@+id/bottom_divider"
android:layout_width="match_parent"
android:layout_height="@dimen/card_divider"
android:layout_marginTop="12dp"
android:background="@color/colorHairline"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</merge>
...@@ -39,4 +39,11 @@ ...@@ -39,4 +39,11 @@
<attr name="android:backgroundTint" /> <attr name="android:backgroundTint" />
<attr name="android:foregroundTint" /> <attr name="android:foregroundTint" />
</declare-styleable> </declare-styleable>
<declare-styleable name="MoreInformationView">
<attr name="isTopDividerVisible" format="boolean" />
<attr name="isBottomDividerVisible" format="boolean" />
<attr name="titleText" format="string" localization="suggested" />
<attr name="subtitleText" format="string" />
</declare-styleable>
</resources> </resources>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment