我在我的android tv应用程序中使用android.media.tv.TvView
在应用程序中的一个小空间(片段)中观看直播电视。
在观看板球直播时,客户抱怨他们看不到底部的比分。如何调整TvView
的纵横比或缩放内容来解决此问题?
我的片段布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.media.tv.TvView
android:id="@+id/tvView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
初始化TvView的片段代码:
TvInputManager mTvInputManager = (TvInputManager) requireContext()
.getSystemService(Context.TV_INPUT_SERVICE);
List<TvInputInfo> inputs = mTvInputManager.getTvInputList();
List<String> ids = new ArrayList<>();
for (TvInputInfo info : inputs) {
if (info.getType() == type) {
String id = info.getParentId() != null ? info.getParentId() : info.getId();
if (!ids.contains(id)) {
ids.add(id);
}
}
}
int idx = viewModel.deviceDetails.getSettings().getOtherDetails().getPort() - 1;
String id = ids.get(idx);
tvView.setVisibility(View.VISIBLE);
tvView.tune(id, TvContract.buildChannelUriForPassthroughInput(id));
1条答案
按热度按时间mnemlml81#
android.media.tv.TvView类不提供设置宽高比的直接方法。但是,您可以通过在其父布局中调整TvView的布局参数来实现所需的宽高比。
以下是如何以编程方式设置TvView的宽高比的示例:
在本例中,我们根据所需的宽高比(本例中为16:9)计算TvView的新宽度和高度。我们假设TvView的宽度应该与设备屏幕的宽度相匹配。然后,我们通过将宽度除以纵横比来计算高度。最后,我们更新TvView的布局参数以反映新的宽度和高度。
通过动态调整TvView的布局参数,您可以在Android上实现TvView所需的纵横比。