调整LinearLayout的溢出

时间:2014-04-16 15:55:49

标签: android android-layout

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

 <RelativeLayout        
    android:id="@+id/chart_main_panel"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_toLeftOf="@id/chart_right_panel" >

    ...

    <LinearLayout
        android:id="@+id/label_xAxis"
        android:layout_width="match_parent"
        android:layout_height="@dimen/chart_frag_time_height"
        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_width="wrap_content"
    android:layout_height="match_parent"    
    android:paddingTop="3dip"
    android:gravity="center" 
    android:maxLines="1"      
    android:textSize="@dimen/axis_text_size">    

当我横向缩小布局时,我希望保留子视图 布局,但滑动&#39;在布局的左侧,被剪裁在它的左边缘(如溢出:隐藏在css中),右边的视图保持它们的大小和相对位置以及布局。目前正好相反,我找不到一种简单的方法来调整这种行为。

*我有一张发生了什么事的照片,但没有足够的代表发布 - 抱歉。

1 个答案:

答案 0 :(得分:0)

在徒劳无功地寻找这个简单的方法之后,我已经辞职了:

扩展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_width="match_parent"
    android:layout_height="wrap_content"     
    android:focusable="false"
    android:measureAllChildren="true"
    android:scrollbars="none" >    
     <LinearLayout
         android:id="@+id/label_xAxis"
         android:layout_width="wrap_content"
         android:layout_height="@dimen/chart_frag_time_height"  
         android:layout_gravity="right"          
         android:paddingRight="@dimen/chart_right_padding"
         android:orientation="horizontal"            
         android:clipChildren="true"
         android:gravity="right" >
     </LinearLayout>
</com...HideHorizontalLeftOverflowWrapper>