3

现在,如果我将滚动到底部很远,textview 会显示该语句。看起来 promis textview 变大了。有没有办法解决它?

截屏 星星下的一切都是promis textview的一部分。这是一个带有几个换行符的单个字符串 截图2另一个屏幕截图

生成承诺的代码

prm = doc.getElementsByTagName("promise");
            for (int j = 0; j < prm.getLength(); j++) {
                prom += parser.getValue(e, KEY_PROMISES, j) + "\n";

            }
            prom.substring(0,prom.lastIndexOf('\n'));

布局

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

    <RelativeLayout
        android:id="@+id/top"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/face"
            android:layout_width="68dp"
            android:layout_height="68dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true" />

        <TextView
            android:id="@+id/name"
            android:layout_width="243dp"
            android:layout_height="35dp"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@id/face"
            android:text="from" />

        <TextView
            android:id="@+id/office"
            android:layout_width="242dp"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/face"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/name"
            android:layout_toRightOf="@id/face"
            android:text="subject" />
    </RelativeLayout>

    <RatingBar
        android:id="@+id/ratingBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/top"
        android:numStars="6"
        android:singleLine="false" />

    <TextView
        android:id="@+id/promises"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/ratingBar1"
        android:layout_marginTop="5dp"
        android:text="TextView" />

    <ScrollView
        android:id="@+id/scroll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/promises"
        android:layout_marginRight="22dp"
        android:layout_marginTop="26dp" >

        <TextView
            android:id="@+id/statement"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
    </ScrollView>

</RelativeLayout>

我的应用的活动

public class SingleMenuItemActivity  extends Activity {


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.candidate);
        Log.d("here ?", "No ");
        int loader = R.drawable.loader;
        // getting intent data
        Intent in = getIntent();
        Log.d("here ?", "No ");
        // Get XML values from previous intent
        String name = in.getStringExtra("name");
        Log.d("Name ", name);
        Log.d("here ?", "No ");
        DatabaseHandler db = new DatabaseHandler(this);
        Log.d("here ?", "No ");
        Candidate p = db.getCandidate(name);
        Log.d("Did i take candidate? ", "yea ");
        db.close();
        Log.d("Statement", p.get_statment());
        // Displaying all values on the screen
        TextView lblName = (TextView) findViewById(R.id.name);
        TextView lblOffice = (TextView) findViewById(R.id.office);
        TextView lblPromise = (TextView) findViewById(R.id.promises);
        TextView lblStatement = (TextView) findViewById(R.id.statement);
        ImageView lblFace = (ImageView) findViewById(R.id.face);
        RatingBar lblRating = (RatingBar) findViewById(R.id.ratingBar1);
        ImageLoader imgLoader = new ImageLoader(this);
        lblName.setText(p.get_name());
        lblOffice.setText(p.get_office());
        lblPromise.setText(p.get_promises());
        lblStatement.setText(p.get_statment());
        lblRating.setRating(p.get_ranking());
        imgLoader.DisplayImage(p.get_photograph(), loader, lblFace);

    }
}

logcat 说 p.get_statment() 有适当的价值

12-16 05:07:16.089: D/Statement(279): I strive for the highest standards of appearance and personal grooming.  If, like me, you think that the University's reputation is being dragged down by lecturers who have little or no regard for fashion and are content to wear ill-fitting or patched clothes then vote for me: the stylish choice.

声誉太低,无法发布图片 %)

4

3 回答 3

3

看起来您的 RatingBar 正在覆盖您的statementTextView:

<RatingBar
    android:layout_above="@+id/statement"
    ... />

也许你的意思是layout_below

此外,您的promisesTextView 的上边距非常大,它可能会将statementTextView 推离屏幕底部:

<TextView
    android:id="@+id/promises"
    android:layout_marginTop="124dp"
    ... />

加法显然, TextView
的末尾还有许多换行符。promises如果您无法从源中删除这些字符,您可以使用trim()

prom = prom.trim();
于 2012-12-16T05:43:42.603 回答
2

您的代码似乎正确。如果带有 id lblStatement的 textView不显示文本,则可能是您的背景无法识别文本(因此请尝试更改颜色),或者边距不足以容纳 textview 位置。

如果p.get_statment()具有正确的值,则没有其他可能的原因。

于 2012-12-16T05:33:51.410 回答
0

好的,我找到了解决方案,除了我不明白为什么 textview 扩展了这么多我现在知道如何修复它:) 首先我们需要知道行数,哪个字符串会产生

private static int countLines(String str){
           String[] lines = str.split("\r\n|\r|\n");
           return  lines.length;
        }

然后简单地限制文本视图的大小

lblPromise.setMaxLines(countLines(p.get_promises()));
于 2012-12-17T08:17:31.370 回答