我正在更改布局以使用RelativeLayout而不是复杂的嵌套LinerLayouts - 但是我遇到一些问题,因为获取OnClickListener以使View工作。
我已经尝试了常用的东西 - 从前面开始,设置可点击,将focusable / focusableInTouchMode设置为true和false,似乎没有什么对我有用。希望我犯了一个愚蠢的错误,你们可以帮助我:D
这是我的代码:
布局: <已删除,请参阅编辑>
自定义基础适配器: <删除,结果只是一个布局问题>
布局适用于列表适配器中的行项目,我只需要使该行的一半可单击,因为另一半具有自己的切换(正常工作)。
提前感谢任何建议!!
编辑:这很奇怪 - 我将它从View更改为TextView,设置背景颜色,现在它正在显示 - 但它没有遵循相对布局设置: android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/toggle"
具体而言,它不应与顶部对齐。但点击工作!现在让它一直覆盖到顶部......
EDIT2:
更新了布局代码:
<已移除,请参阅稍后编辑>
EDIT3:
橙色是clickView - 我希望它延伸到每行的顶部。
EDIT4 :(更改标题)
好的我现在已经正常工作了,clickView覆盖了左上角的行(并且没有使用特定的高度/宽度)。
这是当前的布局代码,让我知道是否有什么我应该做的不同/你能想到的任何改进!
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<View android:id="@+id/fakeView"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_centerInParent="true"/>
<TextView android:id="@+id/clickView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/toggle"
android:layout_alignBottom="@+id/pokemonTypes" />
<!-- android:background="#ffff914e" -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="001"
android:id="@+id/pokemonNumber"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_margin="5dp" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Bulbasaur"
android:id="@+id/pokemonName"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/pokemonNumber"
android:layout_alignRight="@+id/fakeView"
android:layout_marginLeft="5dp" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Grass"
android:id="@+id/pokemonTypes"
android:layout_below="@+id/pokemonName"
android:layout_toRightOf="@+id/pokemonNumber"
android:layout_alignRight="@+id/fakeView"
android:layout_marginLeft="5dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/pokemonImage"
android:layout_centerInParent="true"
android:layout_alignParentTop="true"
android:layout_alignLeft="@+id/fakeView" />
<ToggleButton
android:id="@+id/toggle"
android:layout_width="25dp"
android:layout_height="25dp"
android:background="@drawable/check1"
android:textOn=""
android:textOff=""
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_margin="5dp"
android:layout_centerInParent="true"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/toggle2" />
<ToggleButton
android:id="@+id/toggle2"
android:layout_width="25dp"
android:layout_height="25dp"
android:background="@drawable/check2"
android:textOn=""
android:textOff=""
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_margin="5dp"
android:layout_centerInParent="true"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/toggle3" />
<ToggleButton
android:id="@+id/toggle3"
android:layout_width="25dp"
android:layout_height="25dp"
android:background="@drawable/check3"
android:textOn=""
android:textOff=""
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_margin="5dp"
android:layout_centerInParent="true"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true" />
</RelativeLayout>
我想做的另一件事 - 在切换的右边添加一个更大的空间(可能是边距?),这样当滚动时,快速滚动条不会覆盖切换。有什么想法吗?
答案 0 :(得分:0)
这是基于您的回复的示例布局。它与您的原始布局不完全相同,但我尝试在适用时使其类似。请小心并比较缺少的差异。它在Designer中看起来几乎完美。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/fakeView"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_centerInParent="true" />
<TextView
android:id="@+id/clickView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/info"
android:layout_alignTop="@id/info"
android:background="#ffff914e" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/pokemonNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_margin="5dp"
android:text="001"
android:textAppearance="?android:attr/textAppearanceMedium" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/pokemonName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/fakeView"
android:layout_marginLeft="5dp"
android:layout_toEndOf="@+id/pokemonNumber"
android:layout_toRightOf="@+id/pokemonNumber"
android:text="Bulbasaur"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/pokemonTypes"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:text="Grass"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
<ImageView
android:id="@+id/pokemonImage"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignLeft="@+id/fakeView"
android:layout_alignParentTop="true"
android:layout_gravity="center" />
<ToggleButton
android:id="@+id/toggle"
android:layout_width="25dp"
android:layout_height="25dp"
android:text="Toggle"
android:textOn=""
android:textOff=""
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_gravity="center_vertical"
android:layout_margin="5dp" />
</LinearLayout>
</RelativeLayout>
注意:
总体而言,布局可能不完美符合您的规格。我认为这是一个好的开始。
另一个好主意是使用 layout_weight 属性,但到目前为止我认为你并不需要它。 layout_weight避免使用特定值。请记住,我尝试阻止使用特定值,希望避免屏幕分辨率问题。