设置layout_gravity时,ScrollView / TextView不显示所有数据

时间:2015-07-06 10:47:06

标签: android xml android-layout textview scrollview

每当在样式xml工作表上设置android:layout_gravity="bottom"属性时,文本似乎在顶部被截断,并且底部会出现额外的空白行。我已设置此项,以便在显示太多文本时自动滚动到底部。它托管在DialogFragment

注意:显示的文字来自TextView.setText(Html.fromHtml()),如果重要,则换行符为< br>。打印的a只是测试数据。

在调试TextView时,看起来数据存在(在mText变量中),但它不会显示。

Dialog xml sheet:

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

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:fillViewport="true" >

        <TextView android:id="@+id/status_olcr_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom" />

</ScrollView>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="?android:attr/buttonBarStyle" >

    <Button
        android:id="@+id/status_olcr_ok"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/ok"
        style="?android:attr/buttonBarButtonStyle"
        android:clickable="false" />

</LinearLayout>

在屏幕上显示正在发生的事情(但不应该):

Scrolling to the top (wrong)

Scrolling to the bottom (wrong)

这就是应该发生的事情(当没有layout_gravity属性时):

Scrolling to the top (correct)

Scrolling to the bottom (correct)

有什么想法发生的事吗?

更新:我已启用“显示版面边距”&#39;并且TextView在ScrollView边界上方(或其他方式)呈现。请参见下图:

Update: Scrolling to the top

Update: Scrolling to the bottom

3 个答案:

答案 0 :(得分:0)

我建议您使用RelativeLayout,您可以将滚动视图设置为父视图的顶部,将按钮linerar布局设置为底部。

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

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/llButton"
    android:alignParentTop="true"
    android:fillViewport="true" >

        <TextView android:id="@+id/status_olcr_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom" />

</ScrollView>

<LinearLayout
    android:id="@+id/llButton"
    android:alignParentBottom="true"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="?android:attr/buttonBarStyle" >

    <Button
        android:id="@+id/status_olcr_ok"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/ok"
        style="?android:attr/buttonBarButtonStyle"
        android:clickable="false" />

</RelativeLayout>

答案 1 :(得分:0)

结束了这个解决方案,虽然我仍然不了解最初发生的事情......

在相关的DialogFragment中:

scroll = (ScrollView)getView().findViewById(R.id.scroll);
scroll.post(new Runnable() {
    @Override
    public void run() {
        scroll.fullScroll(View.FOCUS_DOWN);
    }
});

答案 2 :(得分:0)

在textView标签内使用:

android:layout_gravity="top"