2017-12-24 17 views
3

LinearLayout内のImageViewとTextViewの組み合わせをプログラムで膨張させています。直線レイアウトは水平スクロールビューの下にあります。しかし、layout_gravity = "center_horizo​​ntal"を線形レイアウトの親に設定すると、線形レイアウト内のコンテンツが画面外に出てしまいます。水平線形レイアウト内の動的画像ビューで画面外になることを確認

何が起こっているかを参照してください:

screenshot

私はそれがこの

enter image description here

のように表示されますlayout_gravityがなければ、この

this

を達成するためにlayout_gravityを使用しています

layout_gravityを使用していてHorizo​​ntalScrollView内に多数のアイテムがある場合、1または2のアイテムは表示されません。シナリオを理解するために最初にアップロードされた画像を見ることができます。最初の画像では、もっと右にスクロールできず、ImageViewとTextViewの組み合わせが表示されているだけです。さらに、そのような組み合わせが完全に画面外にあります。

ここでは、XML構造

<HorizontalScrollView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 

        android:scrollbarAlwaysDrawHorizontalTrack="false" 
        android:scrollbars="none" 
        android:id="@+id/hotel_detail_services"> 
        <LinearLayout 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_gravity="center_horizontal" 
         android:orientation="horizontal"> 
         <LinearLayout 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:orientation="vertical" 
          android:id="@+id/imageViewLayout" 
          > 
         </LinearLayout> 

        </LinearLayout> 
       </HorizontalScrollView> 

のJava操作

@Override 
    protected void onPostExecute(List<hotel_detail_model> hotel_detail_models) { 
     super.onPostExecute(hotel_detail_models); 
     LinearLayout layout = findViewById(R.id.imageViewLayout); 
     layout.setOrientation(LinearLayout.HORIZONTAL); 
     layout.setGravity(Gravity.CENTER_HORIZONTAL); 


     if (hotel_detail_models.get(0).getTv()==1) 
      addHotelSpeciality(layout,"TV",R.drawable.tv); 
     if (hotel_detail_models.get(0).getAc()==1) 
      addHotelSpeciality(layout,"AC",R.drawable.ac); 
     if (hotel_detail_models.get(0).getGeyser()==1) 
      addHotelSpeciality(layout,"Geyser",R.drawable.geyser); 
     if (hotel_detail_models.get(0).getBus()==1) 
      addHotelSpeciality(layout,"BUS",R.drawable.bus); 
     if (hotel_detail_models.get(0).getCab()==1) 
      addHotelSpeciality(layout,"CAB",R.drawable.cab); 
     if (hotel_detail_models.get(0).getFood()==1) 
      addHotelSpeciality(layout,"FOOD",R.drawable.food); 
     if (hotel_detail_models.get(0).getRailway()==1) 
      addHotelSpeciality(layout,"Train",R.drawable.train); 
     if (hotel_detail_models.get(0).getAirport()==1) 
      addHotelSpeciality(layout,"Airport",R.drawable.airport); 
     if (hotel_detail_models.get(0).getMedical()==1) 
      addHotelSpeciality(layout,"Medical",R.drawable.medical); 
     progressDialog.dismiss(); 
    } 
    //Add Image Dynamically 
    private void addHotelSpeciality(LinearLayout layout, String image_name, int image_id) { 
     LinearLayout linearLayout = new LinearLayout(hotel_details.this); 
     ImageView image = new ImageView(hotel_details.this,null,R.style.dynamicImageHotel); 
     TextView textView = new TextView(hotel_details.this,null,R.style.dynamicTextHotel); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(getResources().getDimensionPixelSize(R.dimen._25sdp), 
       getResources().getDimensionPixelSize(R.dimen._25sdp)); 
     params.weight = 1.0f; 
     params.gravity = Gravity.CENTER_HORIZONTAL; 


     LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT); 
     params2.weight = 1.0f; 
     params2.gravity = Gravity.CENTER_HORIZONTAL; 

     LinearLayout.LayoutParams params3 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
       ViewGroup.LayoutParams.MATCH_PARENT); 
     params3.weight = 1.0f; 
     params2.gravity = Gravity.CENTER_HORIZONTAL; 


     image.setLayoutParams(params); 
     image.setScaleType(ImageView.ScaleType.FIT_CENTER); 
     textView.setLayoutParams(params2); 
     image.setImageDrawable(getResources().getDrawable(image_id)); 
     textView.setText(image_name); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      textView.setTextAppearance(R.style.dynamicTextHotel); 

     }else { 
      textView.setTextAppearance(hotel_details.this,R.style.dynamicTextHotel); 
     } 
     // Adds the view to the layout 
     linearLayout.addView(image); 
     linearLayout.addView(textView); 
     linearLayout.setOrientation(LinearLayout.VERTICAL); 
     linearLayout.setLayoutParams(params3);   linearLayout.setPadding(getResources().getDimensionPixelSize(R.dimen._15sdp),0,0,0); 
     layout.addView(linearLayout); 
    } 

答えて

0

は、それはあなたがHorizontalScrollViewを使用することによって達成しようとしているものではないのか? ScrollViewsはコンテンツを物理ディスプレイよりも大きくすることができるので、十分な "hotelSpecialities"を追加すると、画面外に出てスクロールできます。すべてのコンテンツを画面に収めようとしている場合は、HorizontalScrollViewを使用しないでください。オーケー


は今、私はあなたが、達成しようとしRelativeLayout内部ScrollViewはあなたにそれを与えるだろう、あなたの入れているか知っていること。

これは、あなたがそれを必要としない場合は、あまりにもimageViewLayoutの親LinearLayoutを削除することができます私のため

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent"> 
    <HorizontalScrollView 
    android:id="@+id/hotel_detail_services" 
    android:layout_centerHorizontal="true" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:scrollbarAlwaysDrawHorizontalTrack="false" 
    android:scrollbars="none"> 
    <LinearLayout 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:orientation="horizontal"> 
     <LinearLayout 
     android:id="@+id/imageViewLayout" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:orientation="vertical"> 
     </LinearLayout> 

    </LinearLayout> 
    </HorizontalScrollView> 
</RelativeLayout> 

を働いたものです。もう助けが必要な場合は教えてください!

+0

しかし、スクロールしても最初のコンテンツは画面に表示されません。それが私の言いたいことです。スクリーンショットが表示されたら、Horizo​​ntalScrollViewは左にスクロールできない位置にありますが、項目は表示されません。 – koolier

+0

申し訳ありませんが、スクリーンショットでそのことが説明されていません。私はその修正のために私の答えを更新しました – Napster

+0

上記の変更で作業していません – koolier

関連する問題