【问题标题】:Focus Table Row not working焦点表行不起作用
【发布时间】:2012-10-04 13:59:47
【问题描述】:

我有一个 TableLayout,我希望里面的元素(每个表格行都有一个文本视图)集中在触摸上。我将每个元素的可聚焦属性设置为 true,但它不起作用!

这是xml:

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="bottom"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="right" >


<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentTop="true"
    android:background="#444444"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:gravity="bottom"
    android:orientation="vertical" >

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:focusable="true"
        android:focusableInTouchMode="true" >

        <requestFocus />


        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#993399"
            android:clickable="true"
            android:focusable="true"
            android:focusableInTouchMode="true" >





            <TextView
                android:id="@+id/textView1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginRight="5dip"
                android:layout_weight="1"
                android:clickable="true"
                android:editable="false"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:gravity="right"
                android:text="Zein"
                android:textAppearance="?android:attr/textAppearanceMedium" />

        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:text="Home"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView3"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:text="About us"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow4"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#00FF00"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView4"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:gravity="right"
                android:text="Students"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow5"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView5"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginRight="5dip"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:gravity="left"
                android:text="Course Scheduele"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow6"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView6"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginRight="5dip"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:gravity="left"
                android:text="Exam Scheduele"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow7"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView7"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:text="Exam Grades"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow8"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView8"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:text="Course Grades"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow9"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView9"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:text="GPA"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow10"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView10"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:text="Drop &amp; Add"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow11"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView11"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:text="Petition Enquiry"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow12"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView12"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="#00FFFF"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:gravity="right"
                android:text="University Services"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow13"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView13"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:text="Petition Enquiry"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow14"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#D60024"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView14"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:gravity="right"
                android:text="Employees"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow15"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView15"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:text="Petition Enquiry"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow16"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#009933"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView16"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginRight="5dip"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:gravity="right"
                android:text="My Account"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow17"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <TextView
                android:id="@+id/textView17"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:text="Petition Enquiry"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </TableRow>
    </TableLayout>
</LinearLayout>

我希望每个元素在用户触摸时成为焦点, 知道为什么它不能在这里工作吗?

drawable/table.xml

更新:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true"
           android:color="#993399" /> <!-- pressed -->
     <item android:state_focused="true"
           android:color="#993399" /> <!-- focused -->
     <item android:color="#222222" /> <!-- default -->

</selector>

这就是我在 main.xml 中引用它的方式

 android:src="@drawable/table1"

什么都没有发生

【问题讨论】:

    标签: android focus android-xml android-tablelayout


    【解决方案1】:

    为您的列表视图项创建选择器,并设置其参数,例如:

    <item android:drawable="@drawable/but" android:state_pressed="false" android:state_selected="false"/>
    <item android:drawable="@drawable/butpressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/butpressed" android:state_pressed="false" android:state_selected="true"/>
    

    在示例中我更改了图片,但您可以设置任何其他参数

    【讨论】:

    • 你能不能详细点我真的不太明白你说的是什么
    • stackoverflow.com/questions/1219312/android-selector-text-color 这里是选择器的例子。这个想法是对按钮的不同状态进行编程。您可以对 TableLayout 字段使用相同的想法
    • org.xmlpull.v1.XmlPullParserException:二进制 XML 文件第 4 行: 标签需要一个“drawable”属性或子标签,在 android.graphics.drawable.StateListDrawable.inflate( StateListDrawable.java:178)
    • 你应该在 android:drawable 的 selector 中定义图片,并将 selector 设置为 android:src="@drawable/..."。您显示的异常意味着您在选择器中或在 xml-layout 中定义它时出错
    • 看起来不错。尝试杀死 XML 中无用的方法,问题可能出在此。而且您最好使用样式以使您的 XML 可读。
    猜你喜欢
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多