1

AlertDialog を WebView で、CheckBox を次の RelativeLayout で埋めようとしています。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/webcontent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"  />
    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/webcontent"
        android:layout_marginLeft="7dp"
        android:textColor="#ffffff"     />

</RelativeLayout>

私の調査によると、こちらこちら。私のコードではalertDialog.setMessage()alertDialog.setView(...). WebView のコンテンツが非常に長くなり、ボタンに到達するまでに数回スクロールする必要がある場合、WebView のボタンまでCheckBoxスクロールしても表示されません。誰か助けてくれませんか?前もって感謝します。

4

2 に答える 2

1

スクロールバーが必要です。このメソッドalertDialog.setMessage()は、スクロールバーを親としてテキストビューにテキストを配置するため、長いテキストが機能します。ただしalertDialog.setView()、Android コードでわかるように、ビューをフレームレイアウトに配置します。/data/res/layout/alert_dialog.xml

<LinearLayout android:id="@+id/contentPanel"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:orientation="vertical">
    <ScrollView android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="2dip"
        android:paddingBottom="12dip"
        android:paddingLeft="14dip"
        android:paddingRight="10dip"
        android:overScrollMode="ifContentScrolls">
        <TextView android:id="@+id/message"
            style="?android:attr/textAppearanceMedium"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="5dip" />
    </ScrollView>
</LinearLayout>
<FrameLayout android:id="@+id/customPanel"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1">
    <FrameLayout android:id="@+android:id/custom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="5dip"
        android:paddingBottom="5dip" />
</FrameLayout>

長いテキストがカスタム ビューに重なるため、この xml も使用できませんでした。以下が機能するはずです。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <WebView
            android:id="@+id/webcontent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <CheckBox
            android:id="@+id/checkBox"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="7dp"
            android:textColor="#ffffff" />
    </LinearLayout>

</ScrollView>
于 2013-08-24T17:39:11.803 に答える
0

遅いことはわかっていますが、これが私にとってうまくいったことです。このアプローチでは、チェックボックスは下部に表示され、Web ビューがスクロールされても移動しません (つまり、Web ビューのみがスクロールします)。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" 
  android:gravity="left"
  android:paddingTop="12dp"
  android:paddingLeft="12dp">

  <WebView 
    android:id="@+id/tip_webView"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"/>

  <CheckBox
    android:id="@+id/tip_checkBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Do not display again"
    android:textColor="#000"
    android:paddingTop="12dp" />    

</LinearLayout>
于 2014-08-13T18:33:46.003 に答える