左右移动焦点优化

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
public CharSequence getLabelText(TextView textView, int i, City city) {
textView.setFocusable(true);
textView.setId(R.id.tv);
textView.setFocusableInTouchMode(true);
textView.setNextFocusUpId(R.id.tv);
if(city.getPkey().equals(CacheUtil.getPkey())){
textView.requestFocus();
}

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

@ -148,7 +148,10 @@ public class HospitalActivity extends BaseActivity {
recyclerView.post(new Runnable() {
@Override
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) {
recyclerView.requestFocus();
view.requestFocus();

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

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

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

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

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

Loading…
Cancel
Save