【问题标题】:Android: Custom border for FrameLayoutAndroid:FrameLayout 的自定义边框
【发布时间】:2015-04-24 15:38:40
【问题描述】:

我正在尝试向framelayout 添加自定义边框。 framelayout 用作片段的容器。因此我想显示带有边框的片段。边框应该在 framelayout 的外部,并且不应该占用 framelayout 内部的空间。它应该随着屏幕尺寸的变化而调整。

我现在能想到的是某种自定义 ViewGroup,为边框添加 ImageView。使用图像处理来获取 imageview 的内部区域,并在该区域膨胀框架布局。

我正在寻找一些简单的出路。

【问题讨论】:

  • 一种解决方案是将该图像分成 3 个部分(2 个左右条带和另一个具有中心内容的图像)并计算条带宽度。您将使用该计算值在 ViewGroup 上设置左右填充,其中图像将用作背景。然后可以将这 3 个图像组合在自定义可绘制对象中以获得完整图像

标签: android android-framelayout


【解决方案1】:

最简单的解决方案是创建一个 9-patch 可绘制对象并将其设置为 FrameLayout 的背景。我已经创建了下面的 9-patch drawable,你可以使用它。希望这能满足您的要求。

【讨论】:

    【解决方案2】:

    您可以通过布局 XML 获得效果,例如使用 LinearLayouts 和适当的 layout_weight,因此您最中心的 FrameLayout 将扩展以占用可用空间。

    使用了 4 个可绘制对象:用于框架的顶部、底部、左侧和右侧部分。

    查看此代码:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
    
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:src="@drawable/border_left" />
    
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical">
    
            <ImageView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scaleType="fitXY"
                android:src="@drawable/border_top" />
    
                <FrameLayout
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1">
    
                    <!-- FrameLayout content goes here -->
    
                </FrameLayout>
    
            <ImageView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scaleType="fitXY"
                android:src="@drawable/border_top" />
    
        </LinearLayout>
    
        <ImageView
            android:layout_width="wrap_conttXY"
            android:layout_height="match_parght"
            android:scaleType="fient"
            android:src="@drwable/border_right" />
    
    </LinearLayout>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多