android 怎么让子View 显示超出自身容器的大小?

这是我利用android:clipChildren属性的效果。
图片描述
两层ViewGroup分别调整clipChildren属性

但是这个属性是属于ViewGroup的,具体显示范围的处理都在ViewGrounp#getChildVisibleRect中,

所以一个ViewGroup只能让它的所有子View同时可以超出自身或者同时不能超出自身。

我尝试寻找记录View可显示区域到对象。但是没有结果,所以请问android有什么办法可以让一个View自由的调整它自己的显示区域?不对它的同层级View造成影响呢?

<LinearLayout
    android:layout_width="300dp"
    android:orientation="vertical"
    android:layout_height="300dp">
    <View
        android:id="@+id/top"
        android:layout_width="100dp"
        android:layout_height="100dp" />
    <View
        android:id="@+id/bottom"
        android:layout_width="100dp"
        android:layout_height="100dp" />
</LinearLayout>

top可以超出100*100的显示范围限制,而不影响bottom的显示范围控制在100*100中?


问题更新

但是如果我在API21上 使用了 <ripple/>作为控件的背景。

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="#FF0000" />

并且父控件没有使用clipChildren = false,这个背景仍然可以超出控件的大小!他是通过什么办到的呢?

阅读 10.3k
4 个回答
新手上路,请多包涵

自定义group 测量子view 位置大小

只能往自定义方向走了

父View使用RelativeLayout(全屏),里面的view想显示到哪就能显示到哪, 不影响同层级的View

不清楚你为什么一定要在规定大小的容器内让子view全部展示。假如你只是单纯的想要子view展示在该容器顶端为什么不直接在外面添加一个覆盖容器了?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏