调整 LinearLayout 的溢出

Posted

技术标签:

【中文标题】调整 LinearLayout 的溢出【英文标题】:Adjusting overflow of a LinearLayout 【发布时间】:2014-04-16 15:55:49 【问题描述】:

我在 RelativeLayout 中有一个简单的 LinearLayout,它可以动态添加自定义子视图。

 <RelativeLayout        
    android:id="@+id/chart_main_panel"
    android:layout_
    android:layout_
    android:layout_toLeftOf="@id/chart_right_panel" >

    ...

    <LinearLayout
        android:id="@+id/label_xAxis"
        android:layout_
        android:layout_
        android:layout_above="@id/volume_lay"
        android:paddingRight="@dimen/chart_right_padding"         
        android:clipChildren="true"
        android:gravity="right"
        android:orientation="horizontal">
    </LinearLayout>

    ...

</RelativeLayout>

以下是扩展 TextView 的自定义子视图的属性。 (宽度和文本在添加到 LinearLayout 之前已更改。)

    android:layout_
    android:layout_    
    android:paddingTop="3dip"
    android:gravity="center" 
    android:maxLines="1"      
    android:textSize="@dimen/axis_text_size">    

当我水平缩小布局时,我希望子视图保留在 布局但从布局的左侧“滑出”,在其左边缘被剪裁(如溢出:隐藏在 css 中),右侧的视图保持它们的大小和相对于彼此和布局的相对位置。目前正在发生相反的情况,我找不到调整这种行为的简单方法。

*我有一张正在发生的事情的图片,但没有足够的代表来发布 - 抱歉。

【问题讨论】:

【参考方案1】:

在四处寻找一个简单的方法来做到这一点毫无结果之后,我辞职了:

扩展一个 Horizo​​ntalScrollView 并覆盖它的 onLayout() 方法:

class HideHorizontalLeftOverflowWrapper extends HorizontalScrollView 

    ... 

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b)
    
        super.onLayout(changed,l, t, r, b);
        View wrappedView = super.getChildAt(0);
        if( wrappedView != null)
            super.scrollTo(wrappedView.getWidth(), 0);
    

用它包装 LinearLayout:

<com...HideHorizontalLeftOverflowWrapper
    android:id="@+id/ofwrap_xAxis"
    android:layout_
    android:layout_     
    android:focusable="false"
    android:measureAllChildren="true"
    android:scrollbars="none" >    
     <LinearLayout
         android:id="@+id/label_xAxis"
         android:layout_
         android:layout_  
         android:layout_gravity="right"          
         android:paddingRight="@dimen/chart_right_padding"
         android:orientation="horizontal"            
         android:clipChildren="true"
         android:gravity="right" >
     </LinearLayout>
</com...HideHorizontalLeftOverflowWrapper>

【讨论】:

以上是关于调整 LinearLayout 的溢出的主要内容,如果未能解决你的问题,请参考以下文章

将 LinearLayout 调整为 ImageView 的宽度

在 LinearLayout 中将 TextView 调整为垂直居中(水平)

来自 url 的 LinearLayout setBackgroundDrawable 位图

LinearLayout ImageView 调整所有图像宽度以适合

和我一起看API你所不知道的LinearLayout

ios中怎么让uibutton显示两行文字