Android - SnackBar
2018-07-26 本文已影响11人
乘风破浪的程序员
snackbar layout 源码 design_layout_snackbar
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2015 The Android Open Source Project
~
~ 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.
-->
<view
xmlns:android="http://schemas.android.com/apk/res/android"
class="android.support.design.internal.SnackbarContentLayout"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom">
<TextView
android:id="@+id/snackbar_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="@dimen/design_snackbar_padding_vertical"
android:paddingBottom="@dimen/design_snackbar_padding_vertical"
android:paddingLeft="@dimen/design_snackbar_padding_horizontal"
android:paddingRight="@dimen/design_snackbar_padding_horizontal"
android:textAppearance="@style/TextAppearance.Design.Snackbar.Message"
android:maxLines="@integer/design_snackbar_text_max_lines"
android:layout_gravity="center_vertical|left|start"
android:ellipsize="end"
android:textAlignment="viewStart"/>
<Button
android:id="@+id/snackbar_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/design_snackbar_extra_spacing_horizontal"
android:layout_marginStart="@dimen/design_snackbar_extra_spacing_horizontal"
android:layout_gravity="center_vertical|right|end"
android:minWidth="48dp"
android:visibility="gone"
android:textColor="?attr/colorAccent"
style="?attr/borderlessButtonStyle"/>
</view>
查看源码布局可知 snackbar_text 设置了 maxlines 和 ellipsize, 所以显示的文案资源最多显示2行,末尾用 … 代替。
全部显示出文案资源
val make = Snackbar.make(home_layout_root, desc, Snackbar.LENGTH_LONG)
make.view.setBackgroundColor(resources.getColor(R.color.abc_btn_colored_borderless_text_material))
val viewGroup = make.view as ViewGroup
val contentLayout = viewGroup.getChildAt(0) as SnackbarContentLayout
val messageView = contentLayout.getChildAt(0) as TextView
val actionTextView = contentLayout.getChildAt(1) as TextView
actionTextView.setTextColor(resources.getColor(R.color.tooltip_background_dark))
messageView.textSize = 30f
messageView.ellipsize = null
messageView.maxLines = 10
获取textview 重新设置maxlines 及ellipsize 值