0

スクロールビューを含むビューを膨張させようとしていますが、次の行でビューを膨張させると ClassNotFoundException android.view.scrollview が発生します:

View layout = inflater.inflate(R.layout.news_article, null, true);

私は自分で何か問題を見つけることができず、問題をグーグルで調べても役に立ちませんでした(残念ながら)。

一方、これは実際には、私が行う方法がわからないことに対する回避策でもあります。

状況: 3 つのタブを含むタブ レイアウトがあります。各タブには、ニュース項目を含むリストビューがあります。ニュース項目をクリックすると、リストビューのレイアウトを、現在ポップアップに使用している xml レイアウトに切り替える必要があります (ちょっとごまかしていますが、適切に行う方法がわかりません)。したがって、ポップアップを使用する代わりにこれを行う方法があれば、それが私にとって最良の答えになります。

レイアウトを膨らませる方法:

@Override
public void onClick(View v) 
{
   //setContentView(R.layout.news_article);
   final PopupWindow popUp;
   LayoutInflater inflater = (LayoutInflater)NewsActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
   View layout = inflater.inflate(R.layout.news_article, null, false);
   Display display  =GetWindowManager().getDefaultDisplay();
   int popUpWidth = display.getWidth();
   int popUpHeight = display.getHeight();

   popUp = new PopupWindow(layout,  popUpWidth, popUpHeight, true); 
   popUp.setOutsideTouchable(true);                     

   popUp.setTouchInterceptor(new OnTouchListener()
   {
      @Override
      public boolean onTouch(View v, MotionEvent event) 
      {
        System.out.println("Touch Intercepted");
        if(event.getAction() == MotionEvent.ACTION_OUTSIDE)
        { 
             popUp.dismiss();
        }
            return false;
      }
   });

   popUp.showAtLocation(getListView(), Gravity.TOP, 0, 75);
}

レイアウトの XML コード:

<?xml version="1.0" encoding="utf-8"?>
<Scrollview
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/news_article_scroll"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffffff">

    <ImageView
        android:id="@+id/news_article_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:src = "@drawable/ic_launcher"/>

    <TextView
        android:id="@+id/news_article_header"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:textColor="#000000"
        android:layout_toRightOf="@+id/news_article_icon"
        android:layout_marginTop="10dp"
        android:text="Header" />

    <TextView
        android:id="@+id/news_article_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/news_article_icon"
        android:layout_marginTop="10dp"
        android:textColor="#000000"
        android:text="Text" />

</RelativeLayout>
</Scrollview>

** * ****編集* ** * **** さて、ポップアップが表示されるようになりましたが、そこからイベントを受け取っていません

4

2 に答える 2

2

コードで試してみましたが、xml ファイルで Scrollview を ScrollView に変更すると機能します。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

</ScrollView>

小さい 'v' で記述した場合、xml は正しいですが、インフレータはそれを認識せず、大文字の 'V' が必要です。

その周りに try catch ブロックを配置し、そこにあるので例外をチェックすると、非常に簡単に確認できます。

于 2012-04-19T22:53:03.643 に答える
0

レイアウトをインフレートすると、parentView は設定されませんが、フラグは設定されますtrue

View layout = inflater.inflate(R.layout.news_article, null, true);

フラグを false に設定し、必要な場所にビューを追加します。

View layout = inflater.inflate(R.layout.news_article, null, false); 
myParentViewGroup.add(layout);
于 2012-04-19T22:49:46.177 に答える