我有两个布局,每个布局都包含2个TextView。代码就像这样
第一个布局
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
>
<TextView
android:id="@+id/total_hours_spend"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/total_hours_spend"
android:textSize="14sp"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:textStyle="bold"
android:padding="@dimen/margin_padding_2dp"
android:background="@drawable/rectangle_selector"/>
<TextView
android:id="@+id/total_budget_spend"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/total_budget_spend"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:padding="@dimen/margin_padding_2dp"
android:textStyle="bold"
android:background="@drawable/rectangle_selector"
android:textSize="14sp"/>
</LinearLayout>
第二版布局
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_padding_4dp"
android:padding="@dimen/margin_padding_4dp"
>
<TextView
android:id="@+id/training"
android:layout_width="@dimen/margin_0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:layout_margin="@dimen/margin_padding_2dp"
android:padding="@dimen/margin_padding_5dp"
android:text="Trainings"
android:textStyle="bold"
android:gravity="center"
android:textSize="17sp"
android:background="@drawable/background_selector"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
/>
<TextView
android:id="@+id/learning_programs"
android:layout_width="@dimen/margin_0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="Learning Programs"
android:padding="@dimen/margin_padding_5dp"
android:textStyle="bold"
android:textSize="@dimen/text_size_seventeen"
android:background="@drawable/background_selector"
android:gravity="center"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
/>
</LinearLayout>
对于这两种布局,我需要使用item_selectors在我正在进行的背景图像之间切换。这样的事情
Back_Selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:state_enabled="true" android:drawable="@drawable/rounded_corner" />
<item android:state_focused="true" android:drawable="@drawable/rounded_corner"/>
<item android:drawable="@drawable/rounded_corner_grey"/>
</selector>
和Rectangle_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:state_enabled="true" android:drawable="@drawable/blue_rectangle"/>
<item android:state_focused="true" android:drawable="@drawable/blue_rectangle"/>
<item android:drawable="@drawable/grey_rectangle"/>
</selector>
屏幕的默认设计是TextView Training
和TextView Total hours spend
应该用选择器xml文件中设置的相应drawable突出显示。同时,两个布局中的一个TextView应该是一直都很活跃。
问题是启动应用时只会突出显示Training
。在第二个布局中,两个textView都处于非活动状态。
当我在第二个布局上单击某些内容时,第二个布局中的TextView会变为非活动状态。
我的意思是,在4个文本视图中,两个应始终处于活动状态。 但是使用上面的代码,我只有一个TextVIew处于活动状态。
我应该在这做什么改变?
答案 0 :(得分:0)
正在发生的事情是每个文本视图一次只能有一个焦点(可绘制的聚焦状态),所以如果你点击另一个TextView,它将获得焦点,而另一个则失去它。
考虑到这一点以及您需要两个布局中的一个TextView的事实应该始终处于活动状态,我可以看到您的问题的最佳解决方案是2 { {1}}包含2个RadioButtons而不是TextView:
第一个布局:
RadioGroups
第二个布局:
<RadioGroup android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="40dp"
android:weightSum="1">
<RadioButton
android:id="@+id/total_hours_spend"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:button="@null"
android:text="@string/total_hours_spend"
android:textSize="14sp"
android:textStyle="bold"
android:padding="@dimen/margin_padding_2dp"
android:background="@drawable/rectangle_selector"/>
<RadioButton
android:id="@+id/total_budget_spend"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:button="@null"
android:text="@string/total_budget_spend"
android:padding="@dimen/margin_padding_2dp"
android:textStyle="bold"
android:background="@drawable/rectangle_selector"
android:textSize="14sp"/>
</RadioGroup>
<强> background_selector.xml 强>
<RadioGroup android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_padding_4dp"
android:padding="@dimen/margin_padding_4dp"
android:weightSum="1">
<RadioButton
android:id="@+id/training"
android:layout_width="@dimen/margin_0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:layout_margin="@dimen/margin_padding_2dp"
android:padding="@dimen/margin_padding_5dp"
android:button="@null"
android:text="Trainings"
android:textStyle="bold"
android:gravity="center"
android:textSize="17sp"
android:background="@drawable/background_selector"/>
<RadioButton
android:id="@+id/learning_programs"
android:layout_width="@dimen/margin_0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:button="@null"
android:text="Learning Programs"
android:padding="@dimen/margin_padding_5dp"
android:textStyle="bold"
android:textSize="@dimen/text_size_seventeen"
android:background="@drawable/background_selector"
android:gravity="center"/>
</RadioGroup>
<强> rectangle_selector.xml 强>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/blue_rectangle"/>
<item android:state_checked="false" android:drawable="@drawable/rounded_corner_grey"/>
<item android:drawable="@drawable/rounded_corner_grey"/>
</selector>
通过这种方式,它会在您曝光时起作用。
如果您仍想使用TextView,我看到的唯一方法是以编程方式创建一个实现Checkable接口的TextView,然后处理每个布局中一次只检查一个的逻辑。我认为我提出的解决方案花费的时间更少,达到了预期的效果。