我正在尝试使用 Leanback 创建一排操作项,它们位于视频播放器中播放器控件栏的正上方。
操作项是可操作的图像视图的 ListRow(表示表情符号反应)。
我的问题:我无法让它们位于中心位置,就像主要和次要控制栏以播放器为中心一样。当前列表行如下所示:
这是定义单个操作的 XML 布局:
<?xml version="1.0" encoding="utf-8"?>
<com.makeramen.roundedimageview.RoundedImageView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/rounded_image_view"
android:src="@drawable/ic_action_insert_emoticon"
android:scaleType="fitStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:riv_corner_radius="30dip"
app:riv_border_width="2dip"
app:riv_border_color="#333333"
app:riv_tile_mode="repeat"
app:riv_oval="true">
</com.makeramen.roundedimageview.RoundedImageView>
以及实例化每个行项目的演示者:
public class RoundedViewPresenter extends Presenter {
private static final String TAG = RoundedViewPresenter.class.getSimpleName();
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View rootView = inflater.inflate(R.layout.rounded_image_view, parent, false);
RoundedImageView roundedImageView = (RoundedImageView) rootView.findViewById(R.id.rounded_image_view);
//roundedImageView.mutateBackground(true);
//roundedImageView.setBackground(backgroundDrawable);
roundedImageView.setFocusable(true);
roundedImageView.setFocusableInTouchMode(true);
((HorizontalGridView)parent).setGravity(Gravity.CENTER);
return new ViewHolder(roundedImageView);
} ...
然后像这样在播放器的片段中添加行:
// add emoji rows
...
ArrayObjectAdapter emojiRowAdapter = new ArrayObjectAdapter(new RoundedViewPresenter());
emojiRowAdapter.add(mObjectModel0);
emojiRowAdapter.add(mObjectModel1);
emojiRowAdapter.add(mObjectModel2);
emojiRowAdapter.add(mObjectModel3);
ListRow emojiRow = new ListRow(emojiRowAdapter);
mRowsAdapter.add(emojiRow);
...
我已经尝试了 android:layout_gravity="center" 和编程 HorizontalGridView.setGravity ()方法,但都没有成功。
知道为什么和/或将行居中的替代方法吗?