Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TextView无法平滑滚动_Java_Android_Xml_Android Layout - Fatal编程技术网

Java TextView无法平滑滚动

Java TextView无法平滑滚动,java,android,xml,android-layout,Java,Android,Xml,Android Layout,我正在尝试使用以下代码滚动我的文本视图: TextView text = (TextView) findViewById(R.id.textView12); text.setMovementMethod(ScrollingMovementMethod.getInstance()); int height = getResources().getDrawable(R.drawable.pic_ground_pranic).getIntrinsicHeight();

我正在尝试使用以下代码滚动我的文本视图:

TextView text = (TextView) findViewById(R.id.textView12);
        text.setMovementMethod(ScrollingMovementMethod.getInstance());
        int height = getResources().getDrawable(R.drawable.pic_ground_pranic).getIntrinsicHeight();
        text.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, height));
        text.setText("As part of an Android App I am building a button set.For performance reasons and to keep the code simpler, the Android system uses pixels as the standard unit for expressing dimension or coordinate values. That means that the dimensions of a view are always expressed in the code using pixels, but always based on the current screen density. For instance, if myView.getWidth() returns 10, the view is 10 pixels wide on the current screen, but on a device with a higher density screen, the value returned might be 15. If you use pixel values in your application code to work with bitmaps that are not pre-scaled for the current screen density, you might need to scale the pixel values that you use in your code If you need to control exactly how your application will look on various screen configurations, adjust your layouts and bitmap drawables in configuration-specific resource directories. For example, consider an icon that you want to display on medium and high density screens. Simply create your icon at two different sizes (for instance 100x100 for medium density and 150x150 for high density) and put the two variations in the appropriate directories, using the proper qualifiers: For instance, suppose a device has a WVGA high-density screen, which is 480x800 and about the same size as a traditional HVGA screen, but it's running an application that has disabled pre-scaling. In this case, the system will lie to the application when it queries for screen dimensions, and report 320x533 (the approximate mdpi translation for the screen density). Then, when the application does drawing operations, such as invalidating the rectangle from (10,10) to (100, 100), the system transforms the coordinates by scaling them the appropriate amount, and actually invalidate the region (15,15) to (150, 150). This discrepancy may cause unexpected behavior if your application directly manipulates the scaled bitmap, but this is considered a reasonable trade-off to keep the performance of applications as good as possible. If you encounter this situation, read Based on the density of the current screen, the system uses any size- or density-specific resources from your application and displays them without scaling. If resources are not available in the correct density, the system loads the default resources and scales them up or down as needed to match the current screen's density. The system assumes that default resources (those from a directory without configuration qualifiers) are designed for the baseline screen density (mdpi), unless they are loaded from a density-specific resource directory. Pre-scaling is, thus, what the system does when resizing a bitmap to the appropriate size for the current screen density. to match the un-scaled bitmap source. The buttons are part of a nested set of LinearLayouts.The question then is: How to resize the layout.I have tried several suggested techniques, and none come close to working. Here is a subset of the XML that builds the button set:");
一切正常,但我的文本视图滚动不顺畅。我想我必须把我的文本视图放在一个滚动视图中,但这也不起作用

是否因为我正在调整textview的大小而发生这种情况

请提供此问题的任何解决方案。我已经在这上面花了很多时间

我的xml布局文件是:

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

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/include1"
        android:layout_centerHorizontal="true"
        android:background="@android:color/white"
        android:scrollbarStyle="insideInset" >

        <TableLayout
            android:id="@+id/tableLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical"
            android:padding="5dp" >

            <TableRow
                android:id="@+id/tableRow1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <RelativeLayout
                    android:id="@+id/relativeLayout2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1.0" >

                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:layout_marginLeft="5dp"
                        android:layout_marginTop="14dp"
                        android:text="Text 1"
                        android:textColor="@android:color/black" />

                    <TextView
                        android:id="@+id/textView3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignBottom="@+id/textView2"
                        android:layout_marginLeft="25dp"
                        android:layout_toRightOf="@+id/textView2"
                        android:text="Text 2"
                        android:textColor="@android:color/black" />

                    <TextView
                        android:id="@+id/textView4"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignBottom="@+id/textView3"
                        android:layout_marginLeft="25dp"
                        android:layout_toRightOf="@+id/textView3"
                        android:text="Text 3"
                        android:textColor="@android:color/black" />

                    <TextView
                        android:id="@+id/textView5"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignTop="@+id/textView4"
                        android:layout_marginLeft="25dp"
                        android:layout_toRightOf="@+id/textView4"
                        android:text="Text 4"
                        android:textColor="@android:color/black" />

                    <TextView
                        android:id="@+id/textView6"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:layout_below="@+id/textView2"
                        android:layout_marginLeft="5dp"
                        android:layout_marginTop="3dp"
                        android:textColor="@android:color/black" />

                    <TextView
                        android:id="@+id/textView7"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignLeft="@+id/textView3"
                        android:layout_below="@+id/textView3"
                        android:layout_marginTop="3dp"
                        android:textColor="@android:color/black" />

                    <TextView
                        android:id="@+id/textView8"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignLeft="@+id/textView4"
                        android:layout_below="@+id/textView4"
                        android:layout_marginTop="3dp"
                        android:textColor="@android:color/black" />

                    <TextView
                        android:id="@+id/textView9"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignLeft="@+id/textView5"
                        android:layout_below="@+id/textView5"
                        android:layout_marginTop="3dp"
                        android:textColor="@android:color/black" />
                </RelativeLayout>
            </TableRow>

            <TableRow
                android:id="@+id/tableRow2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <RelativeLayout
                    android:id="@+id/relativeLayout3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1.0" >

                    <SeekBar
                        android:id="@+id/seekBar1"
                        android:layout_width="150dp"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:soundEffectsEnabled="true" />

                    <TextView
                        android:id="@+id/textView10"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:layout_centerVertical="true"
                        android:text="Volume 1"
                        android:textColor="@android:color/black" />
                </RelativeLayout>
            </TableRow>

            <TableRow
                android:id="@+id/tableRow3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <RelativeLayout
                    android:id="@+id/relativeLayout4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1.0" >

                    <SeekBar
                        android:id="@+id/seekBar2"
                        android:layout_width="150dp"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:soundEffectsEnabled="true" />

                    <TextView
                        android:id="@+id/textView11"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:layout_centerVertical="true"
                        android:text="Volume 2"
                        android:textColor="@android:color/black" />
                </RelativeLayout>
            </TableRow>

            <TableRow
                android:id="@+id/tableRow4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:baselineAligned="false" >

                <LinearLayout
                    android:id="@+id/linearLayout1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1.0"
                    android:orientation="vertical" >

                    <Button
                        android:id="@+id/button1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="right"
                        android:text="Save Volumes" />
                </LinearLayout>
            </TableRow>

            <TableRow
                android:id="@+id/tableRow5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical" >

                <FrameLayout
                    android:id="@+id/frameLayout3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1.0"
                    android:orientation="vertical" >

                    <TextView
                        android:id="@+id/textView12"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_gravity="center_vertical|center_horizontal"
                        android:gravity="top|left"
                        android:scrollbars="vertical"
                        android:visibility="visible" />
                </FrameLayout>
            </TableRow>

            <TableRow
                android:id="@+id/tableRow8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <FrameLayout
                    android:id="@+id/frameLayout2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1.0" >

                    <ImageView
                        android:id="@+id/imageView1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="right|center" />

                    <TextView
                        android:id="@+id/textView13"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="right|center"
                        android:layout_marginRight="30dp"
                        android:clickable="true"
                        android:text="Detailed Instruction" />
                </FrameLayout>
            </TableRow>
        </TableLayout>
    </ScrollView>

</RelativeLayout>


提前谢谢

首先,不需要将Layoutparams设置为,因为您已经将其交给了xml布局

如果您有这么长的字符串,那么不要将其直接放在java代码中。而不是将该字符串放入resources目录

转到值,打开strings.xml文件并定义字符串

见下文:

    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, HelperStackOverflowActivity!</string>
    <string name="app_name">HelperStackOverflow</string>
    <string name="String1">"PUT YOUR STRING HERE" </string>

</resources>
它可以像正常的滚动一样滚动

希望它能帮助你


享受。:)

问题是ScrollView内部的ScrollView

当你把ScrollView放在ScrollView里面的时候,android会搞不清楚哪个滚动视图被触动了。因此,有时它无法传递触摸事件

在搜索了一段时间后,我找到了一个链接或博客,它将提取这个问题,并提供解决方案

看看博客。这正是你一直在寻找的,我相信它会解决你的问题


现在是享受的时候了;)

仅当您限制文本视图的高度时,文本视图才会滚动。简单的规则是当文本超过可用空间时,textview开始滚动。 一种方法是通过指定一个固定的高度(从某个图像大小获得)来实现。另一种方法是设置最大行数

TextView text = (TextView) findViewById(R.id.textView12);
text.setMaxLines(5);
text.setMovementMethod(ScrollingMovementMethod.getInstance());
你甚至可以让它更有活力。只需计算行数

TextView text = (TextView) findViewById(R.id.textView12);
text.setMaxLines(5);
text.setMovementMethod(ScrollingMovementMethod.getInstance());

行数=(以像素为单位的图像高度)/(以像素为单位的文本字体大小)

在我的例子中,我只需要将文本视图放在滚动视图中。滚动变得非常流畅,用户从此过上了幸福的生活

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true"
    >
    <TextView
        android:id="@+id/textview_about"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textIsSelectable="true"
        android:textSize="20dp" />
</ScrollView>


您的问题解决了吗?请查看我的答案,因为它符合您的要求。首先,很抱歉让你回复,我正在做你建议的所有事情,但这帮不了忙。TextView不作为我的例外滚动。我是这样做的
TextView TextView=(TextView)findViewById(R.id.TextView 12);TextView text=(TextView)findViewById(R.id.textView12);setMovementMethod(ScrollingMovementMethod.getInstance());setText(getResources().getString(R.string.myString))我在这里做什么为什么TextView不滚动?删除所有行,只需添加这一行,然后重试。TextView text=(TextView)findViewById(R.id.textView12);setText(getResources().getString(R.string.myString));如果我像你说的那样做,文本视图的高度会根据文本自动增加,比如“wrap content”,如果我将高度设置为“193px”,那么它就不会滚动。我认为不使用ScrollView文本视图是不可滚动的。@Pari:好的,然后根据需要修改文本视图的高度大小,然后将LinearLayout作为该文本视图的父级,ScrollView作为该LinearLayout的父级。现在它肯定能用了。我什么都试过了,但没有成功。我不明白为什么文本视图不滚动。我按照你的建议试过了,但也没用。我试过了,现在我的问题解决了。谢谢你的回答。我的文本视图已经平滑了。谢谢