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 值

上一篇下一篇

猜你喜欢

热点阅读