Commit ca612317 authored by wanglei's avatar wanglei

...

parent ba9b5a2b
This diff is collapsed.
package com.base.browserwhite.ui.activity.webbrowser package com.base.browserwhite.ui.activity.webbrowser
import android.graphics.Color import android.graphics.Color
import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
import com.base.browserwhite.R
import com.base.browserwhite.databinding.ActivityWebBrowserBinding import com.base.browserwhite.databinding.ActivityWebBrowserBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.fragment.WebViewFragment
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
...@@ -12,11 +18,68 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() { ...@@ -12,11 +18,68 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
override val binding: ActivityWebBrowserBinding by lazy { override val binding: ActivityWebBrowserBinding by lazy {
ActivityWebBrowserBinding.inflate(layoutInflater) ActivityWebBrowserBinding.inflate(layoutInflater)
} }
private val fragmentList = arrayListOf<Fragment>()
private var currentFragment: WebViewFragment? = null
override fun initView() { override fun initView() {
BarUtils.setStatusBarLightMode(this, true) BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT) BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight()) binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
val uri = intent.extras?.getString("uri") ?: ""
binding.editWeb.setText(uri)
addNewWebSite(uri)
}
private fun checkLeftRight() {
if (currentFragment?.canGoBack() == true) {
binding.ivLeft.setImageResource(R.mipmap.left_s)
} else {
binding.ivLeft.setImageResource(R.mipmap.left_n)
}
if (currentFragment?.canGoForward() == true) {
binding.ivRight.setImageResource(R.mipmap.right_s)
} else {
binding.ivRight.setImageResource(R.mipmap.right_n)
}
}
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
if (currentFragment?.canGoBack() == true) {
currentFragment?.goBack()
} else {
finishToMain()
}
}
binding.ivLeft.setOnClickListener {
if (currentFragment?.canGoBack() == true) {
currentFragment?.goBack()
}
}
binding.ivRight.setOnClickListener {
if (currentFragment?.canGoForward() == true) {
currentFragment?.goForward()
}
}
}
private fun addNewWebSite(uri: String) {
val myFragment = WebViewFragment(uri)
val transaction: FragmentTransaction = supportFragmentManager.beginTransaction()
transaction.replace(R.id.container, myFragment)
transaction.commit()
fragmentList.add(myFragment)
currentFragment = myFragment
currentFragment?.onPageFinished = {
checkLeftRight()
}
} }
} }
\ No newline at end of file
package com.base.browserwhite.ui.activity.webstore package com.base.browserwhite.ui.activity.webstore
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.graphics.drawable.Drawable
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.browserwhite.R
import com.base.browserwhite.bean.WebCategoryBean import com.base.browserwhite.bean.WebCategoryBean
import com.base.browserwhite.bean.WebSiteGroupBean import com.base.browserwhite.bean.WebSiteGroupBean
import com.base.browserwhite.bean.webCategoryBeanList import com.base.browserwhite.bean.webCategoryBeanList
...@@ -11,18 +14,28 @@ import com.base.browserwhite.bean.webSiteGroupBeanList ...@@ -11,18 +14,28 @@ import com.base.browserwhite.bean.webSiteGroupBeanList
import com.base.browserwhite.databinding.ActivityWevStoreBinding import com.base.browserwhite.databinding.ActivityWevStoreBinding
import com.base.browserwhite.databinding.ItemTabWebstoreBinding import com.base.browserwhite.databinding.ItemTabWebstoreBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.activity.webbrowser.WebBrowserActivity
import com.base.browserwhite.ui.adapter.WebSiteGroupAdapter
import com.base.browserwhite.utils.AssetUtils.readJsonFromAsset import com.base.browserwhite.utils.AssetUtils.readJsonFromAsset
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.LogEx
import com.bumptech.glide.Glide
import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.transition.Transition
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class WevStoreActivity : BaseActivity<ActivityWevStoreBinding>() { class WevStoreActivity : BaseActivity<ActivityWevStoreBinding>() {
private val TAG = "WevStoreActivity"
override val binding: ActivityWevStoreBinding by lazy { override val binding: ActivityWevStoreBinding by lazy {
ActivityWevStoreBinding.inflate(layoutInflater) ActivityWevStoreBinding.inflate(layoutInflater)
} }
private val webCategoryBean: ArrayList<WebCategoryBean> = arrayListOf() private val webCategoryBean: ArrayList<WebCategoryBean> = arrayListOf()
private val webSiteGroupBean: ArrayList<WebSiteGroupBean> = arrayListOf() private val webSiteGroupBean: ArrayList<WebSiteGroupBean> = arrayListOf()
private lateinit var adapter: WebSiteGroupAdapter
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun initView() { override fun initView() {
...@@ -30,6 +43,19 @@ class WevStoreActivity : BaseActivity<ActivityWevStoreBinding>() { ...@@ -30,6 +43,19 @@ class WevStoreActivity : BaseActivity<ActivityWevStoreBinding>() {
BarUtils.setStatusBarColor(this, Color.TRANSPARENT) BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight()) binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
adapter = WebSiteGroupAdapter(clickAction = { bean ->
startActivity(Intent(this, WebBrowserActivity::class.java).apply {
putExtra("uri", bean.url)
})
finish()
})
binding.rv.adapter = adapter
binding.tabLayout.observeIndexChange { fromIndex, toIndex, reselect, fromUser ->
if (!reselect) {
binding.rv.smoothScrollToPosition(toIndex)
}
}
initData() initData()
} }
...@@ -40,12 +66,39 @@ class WevStoreActivity : BaseActivity<ActivityWevStoreBinding>() { ...@@ -40,12 +66,39 @@ class WevStoreActivity : BaseActivity<ActivityWevStoreBinding>() {
val list = webSiteGroupBeanList(json) val list = webSiteGroupBeanList(json)
webSiteGroupBean.addAll(list) webSiteGroupBean.addAll(list)
val imageSize = this@WevStoreActivity.resources.getDimensionPixelSize(R.dimen.dp_30)
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
webCategoryBean.forEach { bean -> webCategoryBean.forEach { bean ->
// LogEx.logDebug(TAG, bean.iconUrl)
val tabBinding = ItemTabWebstoreBinding.inflate(layoutInflater) val tabBinding = ItemTabWebstoreBinding.inflate(layoutInflater)
tabBinding.tv.text = bean.name tabBinding.tv.text = bean.name
Glide.with(this@WevStoreActivity).asDrawable().load(bean.iconUrl).into(
object : CustomTarget<Drawable>() {
override fun onResourceReady(resource: Drawable, transition: Transition<in Drawable>?) {
LogEx.logDebug(TAG, "resource=${resource.intrinsicWidth} ${resource.intrinsicHeight}")
/// 这一步必须要做,否则不会显示.
resource.setBounds(0, 0, imageSize, imageSize)
// 设置TextView的左侧图标
tabBinding.tv.setCompoundDrawables(resource, null, null, null)
// 设置图片与文本之间的间距
val padding = 10 // 例如10dp的间距
tabBinding.tv.setCompoundDrawablePadding(padding)
// tabBinding.tv.invalidate()
}
override fun onLoadCleared(placeholder: Drawable?) {
}
}
)
binding.tabLayout.addView(tabBinding.root) binding.tabLayout.addView(tabBinding.root)
} }
adapter.setData(list)
} }
} }
......
package com.base.browserwhite.ui.adapter package com.base.browserwhite.ui.adapter
import android.annotation.SuppressLint
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.browserwhite.R
import com.base.browserwhite.bean.WebSiteBean
import com.base.browserwhite.bean.WebSiteGroupBean import com.base.browserwhite.bean.WebSiteGroupBean
import com.base.browserwhite.databinding.ItemWebsiteGroupBinding
import com.base.browserwhite.utils.XmlEx.inflate
class WebSiteGroupAdapter : RecyclerView.Adapter<WebSiteGroupAdapter.GroupViewHolder>() { class WebSiteGroupAdapter(val clickAction: (bean: WebSiteBean) -> Unit) : RecyclerView.Adapter<WebSiteGroupAdapter.GroupViewHolder>() {
val beanList = arrayListOf<WebSiteGroupBean>() private val beanList = arrayListOf<WebSiteGroupBean>()
inner class GroupViewHolder(view: View) : ViewHolder(view) inner class GroupViewHolder(view: View) : ViewHolder(view)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GroupViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GroupViewHolder {
TODO("Not yet implemented") return GroupViewHolder(R.layout.item_website_group.inflate(parent))
} }
override fun getItemCount(): Int { override fun getItemCount(): Int {
...@@ -21,6 +26,19 @@ class WebSiteGroupAdapter : RecyclerView.Adapter<WebSiteGroupAdapter.GroupViewHo ...@@ -21,6 +26,19 @@ class WebSiteGroupAdapter : RecyclerView.Adapter<WebSiteGroupAdapter.GroupViewHo
} }
override fun onBindViewHolder(holder: GroupViewHolder, position: Int) { override fun onBindViewHolder(holder: GroupViewHolder, position: Int) {
TODO("Not yet implemented") val binding = ItemWebsiteGroupBinding.bind(holder.itemView)
val bean = beanList[position]
val adapter = WebsiteAdapter(1, click = clickAction)
binding.tvName.text = bean.category_name
binding.rvGroup.adapter = adapter
adapter.setData(bean.items)
} }
@SuppressLint("NotifyDataSetChanged")
fun setData(list: List<WebSiteGroupBean>) {
beanList.clear()
beanList.addAll(list)
notifyDataSetChanged()
}
} }
\ No newline at end of file
...@@ -7,11 +7,14 @@ import androidx.recyclerview.widget.RecyclerView ...@@ -7,11 +7,14 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.browserwhite.R import com.base.browserwhite.R
import com.base.browserwhite.bean.WebSiteBean import com.base.browserwhite.bean.WebSiteBean
import com.base.browserwhite.databinding.ItemWebsiteGrid2Binding
import com.base.browserwhite.databinding.ItemWebsiteGridBinding import com.base.browserwhite.databinding.ItemWebsiteGridBinding
import com.base.browserwhite.utils.LogEx import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.utils.XmlEx.inflate import com.base.browserwhite.utils.XmlEx.inflate
import com.bumptech.glide.Glide
class WebsiteAdapter(val click: (bean: WebSiteBean) -> Unit) : RecyclerView.Adapter<WebsiteAdapter.WebSiteViewHolder>() { class WebsiteAdapter(val uiType: Int = 0, val click: (bean: WebSiteBean) -> Unit) :
RecyclerView.Adapter<WebsiteAdapter.WebSiteViewHolder>() {
private val TAG = "WebsiteAdapter" private val TAG = "WebsiteAdapter"
...@@ -22,7 +25,12 @@ class WebsiteAdapter(val click: (bean: WebSiteBean) -> Unit) : RecyclerView.Adap ...@@ -22,7 +25,12 @@ class WebsiteAdapter(val click: (bean: WebSiteBean) -> Unit) : RecyclerView.Adap
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WebSiteViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WebSiteViewHolder {
return WebSiteViewHolder(R.layout.item_website_grid.inflate(parent)) val layout = if (uiType == 0) {
R.layout.item_website_grid
} else {
R.layout.item_website_grid_2
}
return WebSiteViewHolder(layout.inflate(parent))
} }
override fun getItemCount(): Int { override fun getItemCount(): Int {
...@@ -30,14 +38,29 @@ class WebsiteAdapter(val click: (bean: WebSiteBean) -> Unit) : RecyclerView.Adap ...@@ -30,14 +38,29 @@ class WebsiteAdapter(val click: (bean: WebSiteBean) -> Unit) : RecyclerView.Adap
} }
override fun onBindViewHolder(holder: WebSiteViewHolder, position: Int) { override fun onBindViewHolder(holder: WebSiteViewHolder, position: Int) {
val binding = ItemWebsiteGridBinding.bind(holder.itemView)
val bean = beanList[position] val bean = beanList[position]
binding.ivIcon.setImageResource(bean.localIcon) val context = holder.itemView.context
binding.tvName.text = bean.name when (uiType) {
holder.canDrag = !bean.increase 0 -> {
binding.root.setOnClickListener { val binding = ItemWebsiteGridBinding.bind(holder.itemView)
click.invoke(bean) binding.ivIcon.setImageResource(bean.localIcon)
binding.tvName.text = bean.name
holder.canDrag = !bean.increase
binding.root.setOnClickListener {
click.invoke(bean)
}
}
else -> {
val binding = ItemWebsiteGrid2Binding.bind(holder.itemView)
Glide.with(context).load(bean.icon_url).into(binding.iv)
binding.tvName.text = bean.name
binding.root.setOnClickListener {
click.invoke(bean)
}
}
} }
} }
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
......
...@@ -34,7 +34,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -34,7 +34,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
override fun setView() { override fun setView() {
binding.rvWeb.layoutManager = GridLayoutManager(requireContext(), 4, LinearLayoutManager.VERTICAL, false) binding.rvWeb.layoutManager = GridLayoutManager(requireContext(), 4, LinearLayoutManager.VERTICAL, false)
websiteAdapter = WebsiteAdapter { websiteAdapter = WebsiteAdapter(0) {
if (it.name == "Increase") { if (it.name == "Increase") {
requireContext().startActivity(Intent(requireContext(), WevStoreActivity::class.java)) requireContext().startActivity(Intent(requireContext(), WevStoreActivity::class.java))
} else { } else {
......
...@@ -13,17 +13,25 @@ import android.webkit.WebView ...@@ -13,17 +13,25 @@ import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import com.base.browserwhite.databinding.FragmentWebViewBinding import com.base.browserwhite.databinding.FragmentWebViewBinding
class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { class WebViewFragment(val uri: String) : BaseFragment<FragmentWebViewBinding>() {
override val binding: FragmentWebViewBinding by lazy { override val binding: FragmentWebViewBinding by lazy {
FragmentWebViewBinding.inflate(layoutInflater) FragmentWebViewBinding.inflate(layoutInflater)
} }
var onPageFinished: (() -> Unit)? = null
override fun setView() { override fun setView() {
initWebSettings() initWebSettings()
binding.webView.loadUrl("https://www.bilibili.com/") binding.webView.loadUrl(uri)
}
override fun setListener() {
super.setListener()
} }
@SuppressLint("SetJavaScriptEnabled") @SuppressLint("SetJavaScriptEnabled")
...@@ -73,7 +81,6 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -73,7 +81,6 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
message: String?, message: String?,
result: JsResult? result: JsResult?
): Boolean = true ): Boolean = true
} }
binding.webView.webViewClient = object : WebViewClient() { binding.webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean { override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
...@@ -81,6 +88,11 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -81,6 +88,11 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
view?.loadUrl(url) view?.loadUrl(url)
return true return true
} }
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
onPageFinished?.invoke()
}
} }
//设置Cookie //设置Cookie
...@@ -89,4 +101,26 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -89,4 +101,26 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
} }
fun canGoBack(): Boolean {
return binding.webView.canGoBack()
}
fun canGoForward(): Boolean {
return binding.webView.canGoForward()
}
fun goBack() {
return binding.webView.goBack()
}
fun goForward() {
return binding.webView.goForward()
}
fun javascriptBack() {
binding.webView.evaluateJavascript("window.history.back();", null)
}
} }
\ No newline at end of file
...@@ -7,9 +7,161 @@ ...@@ -7,9 +7,161 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".ui.activity.webbrowser.WebBrowserActivity"> tools:context=".ui.activity.webbrowser.WebBrowserActivity">
<fragment
android:name="com.base.browserwhite.ui.fragment.WebViewFragment" <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_top"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="50dp"
android:layout_marginHorizontal="15dp"
android:layout_marginVertical="15dp"
android:background="@drawable/bg_stroke_070709"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/fl_search_engine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="?android:attr/selectableItemBackground"
android:padding="5dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription">
<ImageView
android:id="@+id/iv_search_engine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/h_s_google"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="-2dp"
android:layout_marginBottom="-2dp"
android:src="@mipmap/xuanze"
app:layout_constraintBottom_toBottomOf="@id/fl_search_engine"
app:layout_constraintEnd_toEndOf="@id/fl_search_engine"
tools:ignore="ContentDescription" />
</androidx.constraintlayout.widget.ConstraintLayout>
<EditText
android:id="@+id/edit_web"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginHorizontal="5dp"
android:background="@null"
android:gravity="center_vertical"
android:hint="Search or enter website address"
android:paddingHorizontal="15dp"
android:singleLine="true"
android:textColorHint="#858587"
android:textSize="14sp"
app:layout_constraintEnd_toStartOf="@id/fl_scan"
app:layout_constraintStart_toEndOf="@id/fl_search_engine"
tools:ignore="Autofill,HardcodedText,TextFields" />
<FrameLayout
android:id="@+id/fl_scan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="?android:attr/selectableItemBackground"
android:padding="5dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/saoyisao" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginVertical="15dp"
app:layout_constraintBottom_toTopOf="@id/cl_bottom"
app:layout_constraintTop_toBottomOf="@id/cl_top"
tools:ignore="UselessLeaf" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_bottom"
android:layout_width="match_parent"
android:layout_height="60dp"
app:layout_constraintBottom_toBottomOf="parent">
<ImageView
android:id="@+id/iv_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/left_n"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/iv_right"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/right_n"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/iv_home"
app:layout_constraintStart_toEndOf="@id/iv_left"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/home"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/tv_label"
app:layout_constraintStart_toEndOf="@id/iv_right"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tv_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/biaoqian"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/iv_more"
app:layout_constraintStart_toEndOf="@id/iv_home"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/gengduo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tv_label"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -14,10 +14,11 @@ ...@@ -14,10 +14,11 @@
tools:ignore="UselessParent"> tools:ignore="UselessParent">
<TextView <TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start" android:layout_gravity="center_vertical|start"
android:layout_marginVertical="20dp" android:layout_marginVertical="15dp"
android:layout_marginStart="15dp" android:layout_marginStart="15dp"
android:text="Web Store" android:text="Web Store"
android:textColor="@color/black" android:textColor="@color/black"
...@@ -37,16 +38,25 @@ ...@@ -37,16 +38,25 @@
</FrameLayout> </FrameLayout>
<com.angcyo.tablayout.DslTabLayout <com.angcyo.tablayout.DslTabLayout
android:layout_marginHorizontal="16dp"
android:id="@+id/tabLayout" android:id="@+id/tabLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="45dp" android:layout_height="45dp"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="10dp"
app:tab_deselect_color="@color/black" app:tab_deselect_color="@color/black"
app:tab_divider_solid_color="@android:color/transparent" app:tab_divider_solid_color="@android:color/transparent"
app:tab_divider_width="16dp" app:tab_divider_width="16dp"
app:tab_draw_divider="true" app:tab_draw_divider="true"
app:tab_enable_ico_color="false"
app:tab_indicator_style="STYLE_NONE" app:tab_indicator_style="STYLE_NONE"
app:tab_select_color="@color/white" /> app:tab_select_color="@color/white" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:nestedScrollingEnabled="false"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_website_group" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -3,11 +3,12 @@ ...@@ -3,11 +3,12 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tv" android:id="@+id/tv"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:background="@drawable/bg_tab_selector_webstore" android:background="@drawable/bg_tab_selector_webstore"
android:gravity="center" android:gravity="center"
android:paddingHorizontal="18dp" android:paddingHorizontal="18dp"
android:paddingVertical="10dp" android:paddingVertical="5dp"
android:textSize="17sp" android:textSize="17sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="Socialize" /> tools:text="Socialize" />
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout 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" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="45dp" android:layout_height="45dp"
...@@ -8,15 +9,25 @@ ...@@ -8,15 +9,25 @@
android:background="@drawable/bg_f3f4f6_10" android:background="@drawable/bg_f3f4f6_10"
android:orientation="horizontal"> android:orientation="horizontal">
<ImageView <androidx.cardview.widget.CardView
android:id="@+id/iv" android:layout_width="30dp"
android:layout_width="wrap_content" android:layout_height="30dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
tools:ignore="ContentDescription" /> app:cardCornerRadius="5dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="ContentDescription" />
</androidx.cardview.widget.CardView>
<TextView <TextView
android:id="@+id/tv_name"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="10dp" android:layout_marginHorizontal="10dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:nestedScrollingEnabled="false"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="2" app:spanCount="2"
tools:listitem="@layout/item_website_grid_2" /> tools:listitem="@layout/item_website_grid_2" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment