如何将类型 GUI 元素从 TextView 更改为 HTMLView
Posted
技术标签:
【中文标题】如何将类型 GUI 元素从 TextView 更改为 HTMLView【英文标题】:How can I change the Type GUI Element from TextView to HTMLView 【发布时间】:2022-01-11 17:28:44 【问题描述】:我有一个代码,它是一个网站,我需要编写一个仅显示此页面的应用程序。 但问题是我的代码没有看到超链接,因为我需要从 TextView 更改为 htmlView。 这是代码:
public class BlackBoardClient
private static final String BLACK_BOARD_URL = "https://zpa.cs.hm.edu/public/notice_board/";
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy");
public static List<BlackBoardEntry> getBlackBoardEntries() throws IOException
List<BlackBoardEntry> entries = new ArrayList<>();
Document doc = Jsoup.connect(BLACK_BOARD_URL).get();
Element newsTable = doc.getElementById("content").selectFirst("table");
Iterable<Element> rows = newsTable.selectFirst("tbody").children();
for (Element row : rows)
Iterator<Element> columns = row.children().iterator();
String author = columns.next().text();
String title = columns.next().text();
String content = columns.next().text();
LocalDate validFrom = LocalDate.parse(columns.next().text(), FORMATTER);
LocalDate validUntil = LocalDate.parse(columns.next().text(), FORMATTER);
BlackBoardEntry entry = new BlackBoardEntry(author, title, content, validFrom, validUntil);
entries.add(entry);
return entries;
显示如下:enter image description here
public class MainActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView dataList = findViewById(R.id.dataList);
dataList.setOnItemClickListener(new AdapterView.OnItemClickListener()
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
BlackBoardEntry entry = (BlackBoardEntry) parent.getItemAtPosition(position);
String content = entry.getContent();
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View popupView = inflater.inflate(R.layout.content_popup, null, false);
((TextView) popupView.findViewById(R.id.contentView)).setText(content);
PopupWindow popup = new PopupWindow(popupView, 500, 1000, true);
popup.showAtLocation(parent, Gravity.CENTER, 0, 0);
);
new Thread(new Runnable()
@Override
public void run()
try
List<BlackBoardEntry> entries = BlackBoardClient.getBlackBoardEntries();
BlackBoardAdapter adapter = new BlackBoardAdapter(entries, getApplicationContext());
dataList.post(new Runnable()
@Override
public void run()
dataList.setAdapter(adapter);
);
catch (IOException e)
e.printStackTrace();
).start();
【问题讨论】:
【参考方案1】:对于仅显示现有 URL 中的 Web 内容,我建议实现 android WebView。
您当前的弹出视图定义为 Android TextView:
((TextView) popupView.findViewById(R.id.contentView)).setText(content);
将此更改为 WebView(在 xml“设计-/布局-视图”工具中)
有关示例,请查看 Android 开发人员文档https://developer.android.com/guide/webapps/webview
直接使用,必要时可以调用JS。
不要忘记更改您的清单文件以获得权限。
<manifest ... >
<uses-permission android:name="android.permission.INTERNET" />
...
</manifest>
【讨论】:
以上是关于如何将类型 GUI 元素从 TextView 更改为 HTMLView的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 中,如何从 AsyncTask 更改 TextView? [复制]
Unity 4.6 - 如何将 GUI 元素缩放到适合每个分辨率的大小