mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 12:23:58 +01:00
Fix for issue #1224 showing complete notification on click
This commit is contained in:
parent
89245a6d5b
commit
534215fdbc
5 changed files with 123 additions and 24 deletions
|
|
@ -0,0 +1,87 @@
|
||||||
|
package fr.free.nrw.commons.notification;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by jatin on 1/3/18.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.res.TypedArray;
|
||||||
|
import android.text.SpannableStringBuilder;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import fr.free.nrw.commons.R;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User: Bazlur Rahman Rokon
|
||||||
|
* Date: 9/7/13 - 3:33 AM
|
||||||
|
*/
|
||||||
|
public class ExpandableTextView extends android.support.v7.widget.AppCompatTextView {
|
||||||
|
private static final int DEFAULT_TRIM_LENGTH = 40;
|
||||||
|
private static final String ELLIPSIS = "...More";
|
||||||
|
|
||||||
|
private CharSequence originalText;
|
||||||
|
private CharSequence trimmedText;
|
||||||
|
private BufferType bufferType;
|
||||||
|
private boolean trim = true;
|
||||||
|
private int trimLength;
|
||||||
|
|
||||||
|
public ExpandableTextView(Context context) {
|
||||||
|
this(context, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExpandableTextView(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
|
||||||
|
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ExpandableTextView);
|
||||||
|
this.trimLength = typedArray.getInt(R.styleable.ExpandableTextView_trimLength, DEFAULT_TRIM_LENGTH);
|
||||||
|
typedArray.recycle();
|
||||||
|
|
||||||
|
setOnClickListener(new OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
trim = !trim;
|
||||||
|
setText();
|
||||||
|
requestFocusFromTouch();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setText() {
|
||||||
|
super.setText(getDisplayableText(), bufferType);
|
||||||
|
}
|
||||||
|
|
||||||
|
private CharSequence getDisplayableText() {
|
||||||
|
return trim ? trimmedText : originalText;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setText(CharSequence text, BufferType type) {
|
||||||
|
originalText = text;
|
||||||
|
trimmedText = getTrimmedText(text);
|
||||||
|
bufferType = type;
|
||||||
|
setText();
|
||||||
|
}
|
||||||
|
|
||||||
|
private CharSequence getTrimmedText(CharSequence text) {
|
||||||
|
if (originalText != null && originalText.length() > trimLength) {
|
||||||
|
return new SpannableStringBuilder(originalText, 0, trimLength + 1).append(ELLIPSIS);
|
||||||
|
} else {
|
||||||
|
return originalText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public CharSequence getOriginalText() {
|
||||||
|
return originalText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTrimLength(int trimLength) {
|
||||||
|
this.trimLength = trimLength;
|
||||||
|
trimmedText = getTrimmedText(originalText);
|
||||||
|
setText();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTrimLength() {
|
||||||
|
return trimLength;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17,8 +17,8 @@ import fr.free.nrw.commons.R;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class NotificationRenderer extends Renderer<Notification> {
|
public class NotificationRenderer extends Renderer<Notification> {
|
||||||
@BindView(R.id.title) TextView title;
|
@BindView(R.id.title) ExpandableTextView title;
|
||||||
@BindView(R.id.description) TextView description;
|
@BindView(R.id.description) ExpandableTextView description;
|
||||||
@BindView(R.id.time) TextView time;
|
@BindView(R.id.time) TextView time;
|
||||||
@BindView(R.id.icon) ImageView icon;
|
@BindView(R.id.icon) ImageView icon;
|
||||||
private NotificationClicked listener;
|
private NotificationClicked listener;
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
tools:text="@string/placeholder_place_distance"
|
tools:text="@string/placeholder_place_distance"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<TextView
|
<fr.free.nrw.commons.notification.ExpandableTextView
|
||||||
android:id="@+id/title"
|
android:id="@+id/title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
@ -46,12 +46,12 @@
|
||||||
android:layout_toRightOf="@id/icon"
|
android:layout_toRightOf="@id/icon"
|
||||||
android:layout_toStartOf="@id/time"
|
android:layout_toStartOf="@id/time"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="2"
|
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
|
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
|
||||||
tools:text="@string/placeholder_place_name"
|
tools:text="@string/placeholder_place_name"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<TextView
|
<fr.free.nrw.commons.notification.ExpandableTextView
|
||||||
android:id="@+id/description"
|
android:id="@+id/description"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
@ -62,7 +62,7 @@
|
||||||
android:layout_below="@id/title"
|
android:layout_below="@id/title"
|
||||||
android:layout_marginBottom="16dp"
|
android:layout_marginBottom="16dp"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="4"
|
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
||||||
tools:text="@string/placeholder_place_description"
|
tools:text="@string/placeholder_place_description"
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
|
|
@ -16,4 +16,8 @@
|
||||||
<attr name="drawableEnd" format="reference"/>
|
<attr name="drawableEnd" format="reference"/>
|
||||||
<attr name="drawableBottom" format="reference"/>
|
<attr name="drawableBottom" format="reference"/>
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
|
||||||
|
<declare-styleable name="ExpandableTextView">
|
||||||
|
<attr name="trimLength" format="integer"/>
|
||||||
|
</declare-styleable>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
@ -1,21 +1,29 @@
|
||||||
gradleVersion = 3.0.0
|
## Project-wide Gradle settings.
|
||||||
|
#
|
||||||
SUPPORT_LIB_VERSION = 26.0.2
|
# For more details on how to configure your build environment visit
|
||||||
|
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||||
compileSdkVersion = android-26
|
#
|
||||||
buildToolsVersion = 26.0.2
|
# Specifies the JVM arguments used for the daemon process.
|
||||||
|
# The setting is particularly useful for tweaking memory settings.
|
||||||
minSdkVersion = 15
|
# Default value: -Xmx1024m -XX:MaxPermSize=256m
|
||||||
|
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
|
||||||
targetSdkVersion = 25
|
#
|
||||||
|
# When configured, Gradle will run in incubating parallel mode.
|
||||||
|
# This option should only be used with decoupled projects. More details, visit
|
||||||
|
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||||
|
# org.gradle.parallel=true
|
||||||
|
#Thu Mar 01 15:28:48 IST 2018
|
||||||
|
systemProp.http.proxyPort=0
|
||||||
|
compileSdkVersion=android-26
|
||||||
android.useDeprecatedNdk=true
|
android.useDeprecatedNdk=true
|
||||||
|
|
||||||
# Library dependencies
|
|
||||||
BUTTERKNIFE_VERSION=8.6.0
|
BUTTERKNIFE_VERSION=8.6.0
|
||||||
DAGGER_VERSION=2.13
|
|
||||||
LEAK_CANARY=1.5.4
|
|
||||||
org.gradle.jvmargs=-Xmx1536M
|
org.gradle.jvmargs=-Xmx1536M
|
||||||
|
buildToolsVersion=26.0.2
|
||||||
#TODO: Temporary disabled. https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#aapt2
|
targetSdkVersion=25
|
||||||
#Refer to PR: https://github.com/commons-app/apps-android-commons/pull/932
|
android.enableAapt2=false
|
||||||
android.enableAapt2=false
|
SUPPORT_LIB_VERSION=26.0.2
|
||||||
|
minSdkVersion=15
|
||||||
|
systemProp.http.proxyHost=
|
||||||
|
LEAK_CANARY=1.5.4
|
||||||
|
DAGGER_VERSION=2.13
|
||||||
|
gradleVersion=3.0.0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue