A convenient library to show clickable previews of links.
- Parse entire body of text to automatically find links.
- Find links from different sources and open them in the appropriate app, falling back to a custom tab if none is found.
On your module's build.gradle
file add this statement to the dependencies
section:
dependencies {
implementation 'com.nick.mowen.linkpreview:linkpreview:3.4'
}
Also make sure that the repositories
section includes both jcenter and maven
section with the "google()"
endpoint.
repositories {
jcenter()
google()
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
...
<com.nick.mowen.linkpreview.view.LinkPreview
android:id="@+id/preview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
val preview: LinkPreview = findViewById(R.id.preview)
...
preview.parseTextForLink(string) //Use LinkPreview$parseTextForLink if you have a body of text that contains more than just the link
preview.setLink(linkString) //Use when you have a string that contains only the link
preview.articleColor = ContextCompat.getColor(this, R.color.colorPrimary) //Set the color of the custom tab that is launched on link press
//Use the load listener if you want to take extra action when a link error or success occurs
preview.loadListener = object : LinkListener {
override fun onError() {
Toast.makeText(this@MainActivity, "Link loading failed", Toast.LENGTH_SHORT).show()
}
override fun onSuccess(link: String) {
}
}
You can override the LinkPreview clicklistener all together using the click listener
preview.clickListener = object : LinkClickListener {
override fun onLinkClicked(view: View?, url: String) {
}
}
LinkPreview supports data binding commands so the view can be customized in xml
<com.nick.mowen.linkpreview.view.LinkPreview
android:id="@+id/preview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:parsedLink="@{data.string}"/>
Icon | Application |
---|---|
Texpert |
Please email me or send a pull request if you would like to be added here.
Nick Mowen - nick@nicknackdevelopment.com
Any contributions are welcome!
If you would like to donate / contribute to future development, you can paypal me here
Copyright 2018 Nick Nack Developments
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.