我的应用程序在 Android 2.x到4.1.x
中成功运行在Google TV模拟器中,我正在运行现有的应用程序。
Google TV不支持触摸输入,因此用户必须使用向左移动,向右移动,向上移动并向下移动等导航流程。
但是这个控件不能指向ImageButton控件。
如何触及我的指针来操作ImageButton。?
XML布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background" >
<TextView
android:id="@+id/headingTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dip"
android:gravity="center_horizontal"
android:text="Kit - Device Registration"
android:textSize="75sp" />
<RelativeLayout
android:id="@+id/kitDetailsRelativeLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/headingTextView"
android:layout_centerInParent="true"
android:layout_marginTop="100dp" >
<TextView
android:id="@+id/WebURLTextView"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="right"
android:text="Web Url:"
android:textSize="50dp" />
<EditText
android:id="@+id/WebURLEditText"
style="@style/EditTextStyle"
android:layout_width="700dp"
android:layout_height="wrap_content"
android:layout_marginLeft="60dp"
android:layout_marginTop="30dp"
android:layout_toRightOf="@id/WebURLTextView"
android:hint="Enter Web Url"
android:text=""
android:textSize="40dp" />
<TextView
android:id="@+id/KitNoTextView"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/WebURLTextView"
android:layout_below="@id/WebURLEditText"
android:layout_marginTop="5dp"
android:gravity="right"
android:text="KIT No:"
android:textSize="50dp" />
<EditText
android:id="@+id/KitNoEditText"
style="@style/EditTextStyle"
android:layout_width="700dp"
android:layout_height="wrap_content"
android:layout_below="@id/WebURLTextView"
android:layout_marginLeft="60dp"
android:layout_marginTop="10dp"
android:layout_toRightOf="@id/KitNoTextView"
android:hint="Enter KIT No"
android:textSize="40dp" />
<TextView
android:id="@+id/UniqueIdTextView"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/WebURLTextView"
android:layout_below="@id/KitNoEditText"
android:layout_marginTop="5dp"
android:gravity="right"
android:text="Unique Id:"
android:textSize="50dp" />
<EditText
android:id="@+id/UniqueIdEditText"
android:layout_width="700dp"
android:layout_height="wrap_content"
android:layout_below="@id/KitNoTextView"
android:layout_marginLeft="60dp"
android:layout_marginTop="10dp"
android:layout_toRightOf="@id/UniqueIdTextView"
android:editable="false"
android:focusable="false"
android:textSize="40dp" />
<Button
android:id="@+id/ih_comBtn"
android:layout_width="wrap_content"
android:layout_height="72dp"
android:layout_above="@+id/KitNoTextView"
android:layout_toRightOf="@+id/WebURLEditText"
android:text="@string/lbl_host_name"
android:textSize="35sp" />
</RelativeLayout>
<ImageView
android:id="@+id/topSettingsIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="10dip"
android:layout_marginTop="10dip"
android:background="@drawable/streak_settings" />
<RelativeLayout
android:id="@+id/kitControlRelativeLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp" >
<ImageButton
android:id="@+id/quitBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:background="@drawable/quit_button" />
<ImageButton
android:id="@+id/verifyBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/quitBtn"
android:layout_marginRight="20dip"
android:layout_toLeftOf="@id/quitBtn"
android:background="@drawable/register_button" />
<ImageButton
android:id="@+id/clearBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/quitBtn"
android:layout_marginLeft="20dip"
android:layout_toRightOf="@id/quitBtn"
android:background="@drawable/clear_button" />
</RelativeLayout>
</RelativeLayout>
Java文件代码:
import android.os.Bundle;
//Other Imports
public class <classs Name> extends Activity {
EditText webUrlEditTextObj;
EditText uniqueIdEditTextObj;
/**
* Refers to Register image button
*/
private ImageButton registerBtnObj;
/**
* Refers to Quit image button
*/
private ImageButton quitBtnObj;
/**
* Refers to Clear image button
*/
private ImageButton clearBtnObj;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.<XML file Name>);
//...
registerBtnObj = (ImageButton) findViewById(R.id.verifyBtn);
quitBtnObj = (ImageButton) findViewById(R.id.quitBtn);
clearBtnObj = (ImageButton) findViewById(R.id.clearBtn);
verifyBtnObj.setOnClickListener(verifyListener);
quitBtnObj.setOnClickListener(quitListener);
clearBtnObj.setOnClickListener(clearListener);
//...
}
/**
* Listener for Register button click.
*/
private OnClickListener verifyListener = new OnClickListener() {
public void onClick(View v) {
/**
* Block of code
*/
}
};
/**
* Listener for Quit button click.
*/
private OnClickListener quitListener = new OnClickListener() {
public void onClick(View v) {
/**
* Block of code
*/
}
};
/**
* Listener for Clear button click.
*/
private OnClickListener clearListener = new OnClickListener() {
public void onClick(View v) {
/**
* Block of code
*/
}
};
}
答案 0 :(得分:0)
确保将ImageButtons标记为可聚焦。您还需要确保设置nextFocus *相关属性。以下是我的项目Serenity for Android在播放视频时在OSD上使用ImageButtons。
<ImageButton
android:id="@+id/osd_rewind_control"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:focusable="true"
android:nextFocusRight="@+id/mediacontroller_play_pause"
android:nextFocusUp="@+id/mediacontroller_seekbar"
android:scaleType="fitXY"
style="@android:style/MediaButton.Rew"
android:src="@drawable/skipback_selector"
tools:ignore="ContentDescription" />
再次确保将android:focusable设置为true。我的应用程序的所有源代码也可以查看。