Horizo​​ntalScrollView和RTL

时间:2014-02-15 08:04:32

标签: android android-layout

我正在尝试从右到左使用horizo​​ntalscrollview。 我的targetSDK是17。 我在清单里面

<application android:supportsRtl="true">

我的布局是

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/lay_main_firma_outer"
android:orientation="vertical"    
android:layout_width="match_parent"
android:layout_height="match_parent"   
android:weightSum="1.0"
android:background="@color/bg_firma" >

<HorizontalScrollView 
    android:id="@id/lay_main_firma_hscroll"
    android:fillViewport="true"
    android:orientation="horizontal"    
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1.0" >           
    <LinearLayout
        android:id="@id/lay_main_firma_objekti"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="horizontal"/>    
</HorizontalScrollView>     

我在运行时将对象添加到linearlayout。在运行时,我还使用

设置RTL
    private void rightToLeft_post17(HorizontalScrollView hscv){
    hscv.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);     
    LinearLayout lay=(LinearLayout) hscv.findViewById(R.id.lay_main_firma_objekti);
    if(lay!=null){
        lay.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);      
    }
}

但它不起作用。 知道什么可能是错的吗? 感谢

2 个答案:

答案 0 :(得分:0)

尝试使布局无效:

if(lay!=null){
    lay.setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 
    lay.invalidate();
}

答案 1 :(得分:0)

首先,在将项目加载到horizo​​ntalscrollview中之前,先隐藏horizo​​ntalscrollview的父布局。

       <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
           android:id="@id/lay_main_firma_outer"
           android:orientation="vertical"    
           android:layout_width="match_parent"
           android:layout_height="match_parent"   
           android:weightSum="1.0"
           android:setVisibility="gone"
           android:background="@color/bg_firma" >

上传完成后,以编程方式使您的线性布局可见,如下所示:

             findViewById(R.id.lay_main_firma_outer).setVisibility(View.VISIBLE);