【问题标题】:How to center text horizontally in a line while showing data from database with java如何在使用java显示数据库中的数据时将文本水平居中在一行中
【发布时间】:2019-09-13 16:57:04
【问题描述】:

我在数据库中有一些故事。每一行都有故事。我想用java展示数据库中的故事。我可以展示数据库中的故事。

我的问题是我想显示一些水平居中的线条。为此,我在该行的文本之前添加了 标记,以使文本水平居中。

数据库故事如下:

聪明的老猫头鹰

有一只老猫头鹰住在橡树里。

他每天都看到周围发生的事件。

昨天他看到一个男孩帮助一个老人提一个沉重的篮子。

今天他看到一个女孩对她的母亲大喊大叫。

他越看越少。

他说的越少,他听到的越多。

他听到人们说话和讲故事。

....

故事的寓意:

你应该注意观察,少说多听。

这会让你成为一个聪明人。

我在下面这样尝试。

SQLiteDatabase sqLiteDatabase = DatabaseHelper.getInstance(context).getWritableDatabase();
Cursor cursor2 = sqLiteDatabase.rawQuery("SELECT subject FROM work", new String[]{});
if (cursor2.getCount() == 0) {
        Toast.makeText(context, "No Data to show", Toast.LENGTH_LONG).show();

    } else {
        while (cursor2.moveToNext()) {
            listItem2.add(cursor2.getString(cursor2.getColumnIndex("subject")));
        }

        cursor2.close();
    }

上面的代码显示了所有的文本,包括。但我想删除 并使 标记的线水平居中。

我尝试使用 StringBuilder 和 append 函数。但我无法申请。

StringBuilder sb = new StringBuilder();

我不明白我将如何实现它。

我非常需要你的帮助。

【问题讨论】:

  • 如果一行以<#c> 开头,则必须以编程方式设置listItem 的对齐方式,删除(replace("<#c>", ""),也许是)之前不需要的部分。 StringBuilder 只能建立Strings,但不能对齐它们。
  • @deHaar 实际上我未能以编程方式将 listItem 对齐到以 开头的行。请建议。
  • 文本是否被添加到listItem 并被显示(尽管可能以"<#c>" 开头)?是这条线listItem2.add(cursor2.getString(cursor2.getColumnIndex("subject")));,对吧?
  • 我需要知道这个listItem2 是什么类型,是LinearLayout 还是任何其他类型,或者它甚至是刚刚命名为listItem2TextView?这些类可能有不同的选项来设置其内容的对齐方式。
  • @deHaar 是 ArrayList listItem2 = new ArrayList();

标签: java android database sqlite stringbuilder


【解决方案1】:

如果你只是想

  1. 如果有这样的标签,去掉行首的"<#c>"标签和
  2. 如果行中有这样的标签,则将列表项中的文本居中

那么您可以尝试这样做在设置列表项的文本内容的代码部分中

// get the TextView instance first
TextView textView = ((TextView) rootView.findViewById(R.id.text2));
// then get the text in order to check if it begins with the tag
String text = args.getString(ARG_OBJECT2);
// find out if it begings with the tag
boolean beginsWithTag = text.startsWith("<#c>");

// then handle the case of a leading tag
if (beginsWithTag) {
    // replace the tag with an empty String and trim it
    text = text.replace("<#c>", "").trim(); // removes the leading tag 
    text.trim(); // removes all trailing or leading whitespaces
    textView.setGravity(Gravity.CENTER);
}

// finally just add the text
textView.setText();

请注意,我没有您的完整代码,无法以任何合适的方式对其进行测试。您必须自己调试任何错误。 您也可以缩短此代码,但我认为在这种情况下,多行几行就可以更清楚地做到这一点。

【讨论】:

  • 现在整个 textView 成为中心,而不是 之前的特定行。我只需要将行居中而不是所有文本。请帮忙。
  • @priyankanaskar 我认为实现这一目标的最简单方法是每行显示一个TextView。这当然取决于行数,因此您可能必须以编程方式创建整个ListItem。替代方法是显示in this question。设置textView.setGravity(Gravity.CENTER); 会影响TextView 的全部内容。
猜你喜欢
  • 2020-05-20
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-22
相关资源
最近更新 更多