动态文本视图在带遥控器的 Android 电视中不可选择和可点击
Posted
技术标签:
【中文标题】动态文本视图在带遥控器的 Android 电视中不可选择和可点击【英文标题】:Dynamic textview not selectable and clickable in Android tv with remote control 【发布时间】:2016-04-17 22:51:22 【问题描述】:我在 listview 的行内创建了动态 textview,但该 textview 无法通过电视遥控器聚焦,我想知道 textview 是否有任何特定属性需要设置?
源码在这里:
@Override
public View getView(int position, View convertView, ViewGroup parent)
final EventData item = list.get(position);
ViewHolder holder = null;
if (convertView == null)
holder = new ViewHolder();
inflater = (LayoutInflater) ctx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item_livesports, null);
holder.nameTV = (TextView) convertView.findViewById(R.id.nameTV);
holder.teamsTV = (TextView) convertView.findViewById(R.id.teamsTV);
holder.startsTV = (TextView) convertView.findViewById(R.id.startTV);
holder.channelLL = (TableLayout) convertView
.findViewById(R.id.channelLL);
holder.catIV = (ImageView) convertView.findViewById(R.id.catIV);
convertView.setTag(holder);
else
holder = (ViewHolder) convertView.getTag();
holder.nameTV.setText(item.getName() + " : " + item.getTeams());
holder.teamsTV.setText(item.getTeams());
holder.startsTV.setText(item.getStarts());
setDrawals(holder.catIV, item);
TableRow tr_head = null;
holder.channelLL.removeAllViews();
for (int i = 0; i < item.linkList.size(); i++)
TextView v = new TextView(ctx);
final Spanned name = html.fromHtml("<font color='#0000FF'>"
+ item.linkList.get(i).channelName + "</font>");
final String link = item.linkList.get(i).channelLink;
v.setText(name);
if (i == 0 || i == 2 || i == 4 || i == 6 || i == 8 || i == 10)
tr_head = new TableRow(ctx);
tr_head.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
v.setPadding(20, 15, 20, 15);
tr_head.addView(v);
v.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
// Toast.makeText(ctx, name, 1).show();
linkListener.onLinkClicked(link);
);
if (i == 0 || i == 2 || i == 4 || i == 6 || i == 8 || i == 10)
holder.channelLL.addView(tr_head, new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
return convertView;
【问题讨论】:
请出示您的代码? 请看一下,我用源代码编辑了问题 【参考方案1】:这是在RecyclerView
中吗?
使用 DPAD,除非您手动覆盖并编写一个onKeyDown
方法,该方法在敲击回车键时执行单击,否则无法专注于 TextView。
您可能想为整个视图编写onClickListener
,然后当检测到回车键时,获取当前视图并执行单击。
回收站视图:
convertView.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
//Do stuff
);
在你的活动中:
public boolean onKeyDown(int keyCode, KeyEvent event)
switch(keyCode)
case KeyEvent.KEYCODE_DPAD_CENTER:
mRecyclerView.findViewHolderForAdapterPosition(index).itemView.performClick();
break;
【讨论】:
嗨尼克感谢您的回答..我没有使用 Recyclerview..但我明白了..如果成功,将为您投票以上是关于动态文本视图在带遥控器的 Android 电视中不可选择和可点击的主要内容,如果未能解决你的问题,请参考以下文章