2016-09-17 13 views
-2

ホストすることができます。しかし、java.lang.illegalStateExceptionをスローします。 Horizo​​ntalScrollViewが直接の子を1つしかホストできないというlogcatヒント。私は1つの直接的な子LinearLayoutを設定します。私はインターネットから検索しましたが、問題を解決していません。誰でも私を助けることを願っています。以下はコードです。java.lang.IllegalStateException:Horizo​​ntalScrollViewは、私はHorizo​​ntalScrollViewを使用してギャラリーを実現したい唯一の直接の子

XML

<HorizontalScrollView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="8dp" 
    android:scrollbars="none" 
    > 

    <LinearLayout 
     android:id="@+id/gallery_layout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 
    </LinearLayout> 

</HorizontalScrollView> 

項目XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:paddingTop="10dp" 
    android:paddingLeft="8dp" 
    android:paddingRight="8dp" 
    android:paddingBottom="20dp" 
    > 

    <ImageView 
     android:id="@+id/trend_item_imageview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingBottom="8dp" 
     android:src="@drawable/gallery0" 
     /> 

    <TextView 
     android:id="@+id/trend_item_textview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="权利的游戏" 
     android:textSize="16sp" 
     /> 

</LinearLayout> 

断片

public class DiscoverFragment extends Fragment { 

    private int[] imageResources = {R.drawable.gallery0, R.drawable.gallery1, R.drawable.gallery2, 
     R.drawable.gallery3, R.drawable.gallery4, R.drawable.gallery5}; 

    private String[] imageDescriptions = {"权利的游戏", "风吹的风景", "插画背景", "美食君", "吃", "你好四月"}; 

    private List<TrendItem> trendItemList; 
    private LinearLayout galleryLayout; 

    public DiscoverFragment() { 
    // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_discover, container, false); 
     ButterKnife.bind(this, view); 
     galleryLayout = ButterKnife.findById(view, R.id.gallery_layout); 
     initData(); 
     setView(); 
     return view; 
    } 

    private void initData(){ 
     trendItemList = new ArrayList<>(); 
     for (int i = 0; i < imageResources.length; i++){ 
      TrendItem trendItem = new TrendItem(); 
      trendItem.setImageResource(imageResources[i]); 
      trendItem.setText(imageDescriptions[i]); 
      trendItemList.add(trendItem); 
     } 
    } 

    private void setView(){ 
     for (int i = 0; i < trendItemList.size(); i++){ 
      LayoutInflater inflater = LayoutInflater.from(getContext()); 
      View view = inflater.inflate(R.layout.trend_item, galleryLayout, false); 
      ImageView trendItemImageView = ButterKnife.findById(view, R.id.trend_item_imageview); 
      TextView trendItemTextView = ButterKnife.findById(view, R.id.trend_item_textview); 
      trendItemImageView.setImageResource(trendItemList.get(i).getImageResource()); 
      trendItemTextView.setText(trendItemList.get(i).getText()); 
      galleryLayout.addView(view); 
     } 
    } 
} 
+0

?これはすべてあなたが使用しているコードですか?コードは 'initData'と' setView'メソッドを呼び出すまでですか? – Shadov

+0

私が使用するコードはすべてではありませんが、horizo​​ntalscrollviewに関連しています。私はおそらく 'initdata'と 'setview'呼び出しを考える。さもなければ、それは間違って報告されるべきではありません。 –

+0

なぜ水平リサイクルビューを使用しないのですか? –

答えて

0

意味、あなたはLinearlayoutImageViewTextViewを追加する必要があります。あなたが行うことはできませんHorizo​​ntalScrollViewに2つの要素を追加することによって、あなたはまた彼らの中にLinearLayoutを持っているHorizontalScrollviewに追加されているImageViewのを追加したとき。行がエラーをトリガ

<HorizontalScrollView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:padding="8dp" 
android:scrollbars="none"> 

<LinearLayout 
    android:id="@+id/gallery_layout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

<ImageView 
    android:id="@+id/trend_item_imageview" 
    android:layout_width="your_size" 
    android:layout_height="your_size" 
    android:src="@drawable/gallery0"/> 

<TextView 
    android:id="@+id/trend_item_textview" 
    android:layout_width="your_size" 
    android:layout_height="your_size" 
    android:text="权利的游戏" 
    android:textSize="16sp"/> 

</LinearLayout> 

</HorizontalScrollView> 
+0

複数のイメージビューとテキストビューを追加したい場合、どうすればいいですか? 「horizo​​ntalscrollview」に属する「のLinearLayoutは」(のLinearLayoutに、1つのImageViewの一つのTextViewがある)1「のLinearLayout」より多くを保持するための容器として機能することができますか? –

関連する問題