我正在尝试用带有以下RelativeLayout的WebView和CheckBox填充AlertDialog:
<?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>
根据我的研究here和here。在我的代码中,我没有使用alertDialog.setMessage()
,而是通过调用alertDialog.setView(...)
来使用上面的布局,然后它适用于短文本。当WebView内容变得很长,我需要滚动几次才能到达底部时,即使滚动到webview的底部,也无法显示CheckBox
。有人能帮帮我吗?提前谢谢。
答案 0 :(得分:0)
您需要一个滚动条。方法alertDialog.setMessage()
将文本放入文本视图中,滚动条作为父级,因此长文本正在工作。
但alertDialog.setView()
将视图放入framelayout,您可以在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>
答案 1 :(得分: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>