我正在开发一个模拟器,它可以帮助天真的用户输入一段文字。我想要实现的是,我想将光标(ImageView)指向软键盘。经过大量的研究,我得出结论,我必须创建自己的软键盘作为我的XML的一部分,以便将光标指向键。所以我做到了。现在问题是光标的位置。目前布局如下:
现在图像中的箭头已修复。让我们说它希望它指向字母K,我使用以下java代码:
arrow.setX(keyK.getX()); arrow.setY(keyK.getY());
这是我的XML:
<RelativeLayout
android:id="@+id/keyboard"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#000000" >
<LinearLayout
android:id="@+id/counting"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginTop="3dp"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/key1"
style="@style/countingKey"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/C1" />
<Button
android:id="@+id/key2"
style="@style/countingKey"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/C2" />
<Button
android:id="@+id/key3"
style="@style/countingKey"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/C3" />
<Button
android:id="@+id/key4"
style="@style/countingKey"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/C4" />
<Button
android:id="@+id/key5"
style="@style/countingKey"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/C5" />
<Button
android:id="@+id/key6"
style="@style/countingKey"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/C6" />
<Button
android:id="@+id/key7"
style="@style/countingKey"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/C7" />
<Button
android:id="@+id/key8"
style="@style/countingKey"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/C8" />
<Button
android:id="@+id/key9"
style="@style/countingKey"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/C9" />
<Button
android:id="@+id/key0"
style="@style/countingKey"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/C0" />
</LinearLayout>
<LinearLayout
android:id="@+id/qwe"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/counting"
android:layout_marginBottom="5dp"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/keyQ"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/Q" />
<Button
android:id="@+id/keyW"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/W" />
<Button
android:id="@+id/keyE"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/E" />
<Button
android:id="@+id/keyR"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/R" />
<Button
android:id="@+id/keyT"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/T" />
<Button
android:id="@+id/keyY"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/Y" />
<Button
android:id="@+id/keyU"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/U" />
<Button
android:id="@+id/keyI"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/I" />
<Button
android:id="@+id/keyO"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/O" />
<Button
android:id="@+id/keyP"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/P" />
</LinearLayout>
<LinearLayout
android:id="@+id/asd"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/qwe"
android:layout_marginBottom="5dp"
android:gravity="center"
android:orientation="horizontal" >
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".04"
android:background="#000" >
</TextView>
<Button
android:id="@+id/keyA"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/A" />
<Button
android:id="@+id/keyS"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/S" />
<Button
android:id="@+id/keyD"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/D" />
<Button
android:id="@+id/keyF"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/F" />
<Button
android:id="@+id/keyG"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/G" />
<Button
android:id="@+id/keyH"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/H" />
<Button
android:id="@+id/keyJ"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/J" />
<Button
android:id="@+id/keyK"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/K" />
<Button
android:id="@+id/keyL"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/L" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".04"
android:background="#000" >
</TextView>
</LinearLayout>
<LinearLayout
android:id="@+id/zxc"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/asd"
android:layout_marginBottom="5dp"
android:gravity="center"
android:orientation="horizontal" >
<ImageButton
android:id="@+id/shift"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".08"
android:contentDescription="@string/hello_world"
android:onClick="keyPressed"
android:padding="10dp"
android:src="@android:drawable/ic_menu_upload" />
<Button
android:id="@+id/keyZ"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/Z" />
<Button
android:id="@+id/keyX"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/X" />
<Button
android:id="@+id/keyC"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/C" />
<Button
android:id="@+id/keyV"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/V" />
<Button
android:id="@+id/keyB"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/B" />
<Button
android:id="@+id/keyN"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/N" />
<Button
android:id="@+id/keyM"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".05"
android:onClick="keyPressed"
android:text="@string/M" />
<ImageButton
android:id="@+id/backSpace"
style="@style/Key"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".07"
android:contentDescription="@string/hello_world"
android:src="@android:drawable/ic_input_delete" />
</LinearLayout>
<LinearLayout
android:id="@+id/space"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/zxc"
android:gravity="center" >
<Button
android:id="@+id/sym"
style="@style/spaceKey"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".20"
android:onClick="keyPressed"
android:text="@string/symbol" />
<ImageButton
android:id="@+id/settings"
style="@style/spaceKey"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".15"
android:contentDescription="@string/hello_world"
android:onClick="keyPressed"
android:padding="5dp"
android:src="@drawable/settings" />
<Button
android:id="@+id/keySpace"
style="@style/spaceKey"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".35"
android:onClick="keyPressed"
android:text="@string/space"
android:textSize="12sp" />
<Button
android:id="@+id/keyDot"
style="@style/spaceKey"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".10"
android:onClick="keyPressed"
android:text="@string/dot"
android:textSize="25sp" />
<ImageButton
android:id="@+id/search"
style="@style/spaceKey"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_weight=".15"
android:contentDescription="@string/hello_world"
android:onClick="keyPressed"
android:padding="5dp"
android:src="@android:drawable/ic_menu_search" />
</LinearLayout>
<ImageView
android:id="@+id/ivArrow"
android:layout_width="30dp"
android:layout_height="30dp"
android:contentDescription="@string/hello_world"
android:src="@drawable/arrow" />
</RelativeLayout>