左右移动焦点优化

dev
李桢 1 year ago
parent 1f529250a1
commit 00795968c3
  1. 2
      app/src/main/java/com/unionmed/unionmedtv/activity/AddressSelectActivity.java
  2. 3
      app/src/main/java/com/unionmed/unionmedtv/activity/DoctorActivity.java
  3. 5
      app/src/main/java/com/unionmed/unionmedtv/activity/HospitalActivity.java
  4. 18
      app/src/main/java/com/unionmed/unionmedtv/fragment/MyDoctorFragment.java
  5. 7
      app/src/main/java/com/unionmed/unionmedtv/utils/MyGridLayoutManager.java
  6. 1
      app/src/main/res/layout/activity_address_select.xml
  7. 3
      app/src/main/res/layout/activity_home.xml
  8. 3
      app/src/main/res/layout/fragment_my_doctor.xml

@ -72,7 +72,9 @@ public class AddressSelectActivity extends BaseActivity {
@Override @Override
public CharSequence getLabelText(TextView textView, int i, City city) { public CharSequence getLabelText(TextView textView, int i, City city) {
textView.setFocusable(true); textView.setFocusable(true);
textView.setId(R.id.tv);
textView.setFocusableInTouchMode(true); textView.setFocusableInTouchMode(true);
textView.setNextFocusUpId(R.id.tv);
if(city.getPkey().equals(CacheUtil.getPkey())){ if(city.getPkey().equals(CacheUtil.getPkey())){
textView.requestFocus(); textView.requestFocus();
} }

@ -150,6 +150,9 @@ public class DoctorActivity extends BaseActivity {
recyclerView.post(new Runnable() { recyclerView.post(new Runnable() {
@Override @Override
public void run() { public void run() {
if (doctorInfo.size() == 0) {
selectPostion = selectPostion - 1;
}
View view = recyclerView.getLayoutManager().findViewByPosition(selectPostion); View view = recyclerView.getLayoutManager().findViewByPosition(selectPostion);
if (view != null) { if (view != null) {
recyclerView.requestFocus(); recyclerView.requestFocus();

@ -148,7 +148,10 @@ public class HospitalActivity extends BaseActivity {
recyclerView.post(new Runnable() { recyclerView.post(new Runnable() {
@Override @Override
public void run() { public void run() {
View view = recyclerView.getLayoutManager().findViewByPosition(selectPostion - 1); if (doctorInfo.size() == 0) {
selectPostion = selectPostion - 1;
}
View view = recyclerView.getLayoutManager().findViewByPosition(selectPostion);
if (view != null) { if (view != null) {
recyclerView.requestFocus(); recyclerView.requestFocus();
view.requestFocus(); view.requestFocus();

@ -49,7 +49,8 @@ public class MyDoctorFragment extends Fragment implements View.OnClickListener {
private int startNum = 0; private int startNum = 0;
private int endNum = 10; private int endNum = 10;
private int selectPostion = 0;//当前列表item点击位置 private int selectPostion = 0;//当前列表item点击位置
private ImgConstraintLayout constraint; private ImgConstraintLayout constraint_doctor;
private ImgConstraintLayout constraint_hospital;
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my_doctor, container, false); View view = inflater.inflate(R.layout.fragment_my_doctor, container, false);
@ -70,13 +71,12 @@ public class MyDoctorFragment extends Fragment implements View.OnClickListener {
DoctorDetailActivity.StartActivity(getActivity(), memberBean.getPersoninfo().get(0).getUseraccount()); DoctorDetailActivity.StartActivity(getActivity(), memberBean.getPersoninfo().get(0).getUseraccount());
} }
}); });
iv_doctor = view.findViewById(R.id.iv_doctor); constraint_doctor=view.findViewById(R.id.constraint_doctor);
iv_doctor.setOnClickListener(this);
constraint=view.findViewById(R.id.constraint);
View v=getActivity().findViewById(R.id.tv_my_doctor); View v=getActivity().findViewById(R.id.tv_my_doctor);
constraint.setNextFocusLeftId(v.getId()); constraint_doctor.setNextFocusLeftId(R.id.constraint_doctor);
iv_hospital = view.findViewById(R.id.iv_hospital); constraint_doctor.setOnClickListener(this);
iv_hospital.setOnClickListener(this); constraint_hospital=view.findViewById(R.id.constraint_hospital);
constraint_hospital.setOnClickListener(this);
recyclerView.setAdapter(contractedDoctorAdapter); recyclerView.setAdapter(contractedDoctorAdapter);
recyclerView.addItemDecoration(new LinearSpacingItemDecoration(getActivity(), 24)); recyclerView.addItemDecoration(new LinearSpacingItemDecoration(getActivity(), 24));
// iv_doctor.setOnFocusChangeListener(new View.OnFocusChangeListener() { // iv_doctor.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@ -138,9 +138,9 @@ public class MyDoctorFragment extends Fragment implements View.OnClickListener {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (view.getId() == R.id.iv_doctor) { if (view.getId() == R.id.constraint_doctor) {
DoctorActivity.StartActivity(getActivity()); DoctorActivity.StartActivity(getActivity());
} else if (view.getId() == R.id.iv_hospital) { } else if (view.getId() == R.id.constraint_hospital) {
HospitalActivity.StartActivity(getActivity()); HospitalActivity.StartActivity(getActivity());
} }
} }

@ -53,8 +53,11 @@ public class MyGridLayoutManager extends GridLayoutManager {
int lastVisiblePosition = findLastVisibleItemPosition(); int lastVisiblePosition = findLastVisibleItemPosition();
switch (direction) { switch (direction) {
case View.FOCUS_DOWN: case View.FOCUS_DOWN:
currentPosition = currentPosition + getSpanCount(); if(currentPosition + getSpanCount()<lastVisiblePosition){
scrollToPosition(currentPosition); int nextRowFirstPosition1 = currentPosition + getSpanCount();
scrollToPosition(nextRowFirstPosition1);
return findViewByPosition(nextRowFirstPosition1);
}
break; break;
case View.FOCUS_UP: case View.FOCUS_UP:
if (currentPosition % getSpanCount() == 0 && upView != null) { if (currentPosition % getSpanCount() == 0 && upView != null) {

@ -5,7 +5,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@mipmap/bg_hospital_detail" android:background="@mipmap/bg_hospital_detail"
android:orientation="vertical"> android:orientation="vertical">
<RelativeLayout <RelativeLayout

@ -62,7 +62,7 @@
android:paddingRight="10dp" android:paddingRight="10dp"
android:paddingLeft="10dp" android:paddingLeft="10dp"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:nextFocusRight="@null" android:nextFocusRight="@+id/tv_city"
android:gravity="center" android:gravity="center"
android:textColor="@color/white_f1f1f1" android:textColor="@color/white_f1f1f1"
android:background="@drawable/selector_focus_bg_corner15_without_default_bg" android:background="@drawable/selector_focus_bg_corner15_without_default_bg"
@ -122,6 +122,7 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:gravity="center" android:gravity="center"
android:nextFocusRight="@+id/tv_my_doctor"
android:text="我的医生" android:text="我的医生"
android:textColor="@drawable/selector_txt_color" android:textColor="@drawable/selector_txt_color"
android:textSize="21sp" /> android:textSize="21sp" />

@ -20,7 +20,7 @@
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<com.unionmed.unionmedtv.widgets.ImgConstraintLayout <com.unionmed.unionmedtv.widgets.ImgConstraintLayout
android:id="@+id/constraint" android:id="@+id/constraint_doctor"
style="@style/FocusStyle" style="@style/FocusStyle"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="190dp" android:layout_height="190dp"
@ -65,6 +65,7 @@
</com.unionmed.unionmedtv.widgets.ImgConstraintLayout> </com.unionmed.unionmedtv.widgets.ImgConstraintLayout>
<com.unionmed.unionmedtv.widgets.ImgConstraintLayout <com.unionmed.unionmedtv.widgets.ImgConstraintLayout
android:id="@+id/constraint_hospital"
style="@style/FocusStyle" style="@style/FocusStyle"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="190dp" android:layout_height="190dp"

Loading…
Cancel
Save