diff options
author | Samuel Holland <samuel@sholland.org> | 2017-08-09 06:19:37 -0500 |
---|---|---|
committer | Samuel Holland <samuel@sholland.org> | 2017-08-09 06:19:37 -0500 |
commit | 39ed03f758fdcb22dd01ca576e31b19057ca387a (patch) | |
tree | 829c04cbd18b943e95ea5ee7714001f8d65dba21 | |
parent | 52cdf3e7e5fb4292d1dfa99ba123701ca7959092 (diff) |
ProfileList: Add the list fragment in code so it knows the layout
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
5 files changed, 27 insertions, 14 deletions
diff --git a/app/src/main/java/com/wireguard/android/ProfileListActivity.java b/app/src/main/java/com/wireguard/android/ProfileListActivity.java index 60c35462..feb25511 100644 --- a/app/src/main/java/com/wireguard/android/ProfileListActivity.java +++ b/app/src/main/java/com/wireguard/android/ProfileListActivity.java @@ -17,15 +17,22 @@ public class ProfileListActivity extends ProfileActivity { super.onCreate(savedInstanceState); setContentView(R.layout.profile_list_activity); isSplitLayout = findViewById(R.id.fragment_container) != null; + final FragmentTransaction transaction = getFragmentManager().beginTransaction(); + final Fragment listFragment = getFragmentManager().findFragmentByTag(TAG_LIST); + if (listFragment instanceof ProfileListFragment) { + ((ProfileListFragment) listFragment).setIsSplitLayout(isSplitLayout); + } else { + final ProfileListFragment newListFragment = new ProfileListFragment(); + newListFragment.setIsSplitLayout(isSplitLayout); + transaction.add(R.id.list_container, newListFragment, TAG_LIST); + } if (!isSplitLayout) { // Avoid ProfileDetailFragment adding its menu when it is not in the view hierarchy. - final Fragment fragment = getFragmentManager().findFragmentByTag(TAG_DETAIL); - if (fragment != null) { - final FragmentTransaction transaction = getFragmentManager().beginTransaction(); - transaction.remove(fragment); - transaction.commit(); - } + final Fragment detailFragment = getFragmentManager().findFragmentByTag(TAG_DETAIL); + if (detailFragment != null) + transaction.remove(detailFragment); } + transaction.commit(); onProfileSelected(getCurrentProfile()); } diff --git a/app/src/main/java/com/wireguard/android/ProfileListFragment.java b/app/src/main/java/com/wireguard/android/ProfileListFragment.java index 7c9ecd4d..be1358a4 100644 --- a/app/src/main/java/com/wireguard/android/ProfileListFragment.java +++ b/app/src/main/java/com/wireguard/android/ProfileListFragment.java @@ -16,11 +16,14 @@ import com.wireguard.config.Profile; public class ProfileListFragment extends ServiceClientFragment<ProfileServiceInterface> { private ProfileListFragmentBinding binding; + private boolean isSplitLayout; @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { binding = ProfileListFragmentBinding.inflate(inflater, parent, false); final ListView listView = (ListView) binding.getRoot(); + listView.setChoiceMode(isSplitLayout + ? ListView.CHOICE_MODE_SINGLE : ListView.CHOICE_MODE_NONE); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { @@ -51,4 +54,8 @@ public class ProfileListFragment extends ServiceClientFragment<ProfileServiceInt super.onServiceConnected(service); binding.setProfiles(service.getProfiles()); } + + public void setIsSplitLayout(boolean isSplitLayout) { + this.isSplitLayout = isSplitLayout; + } } diff --git a/app/src/main/res/layout-land/profile_list_activity.xml b/app/src/main/res/layout-land/profile_list_activity.xml index dc7b5c3b..3f02dcca 100644 --- a/app/src/main/res/layout-land/profile_list_activity.xml +++ b/app/src/main/res/layout-land/profile_list_activity.xml @@ -5,12 +5,11 @@ android:baselineAligned="false" android:orientation="horizontal"> - <fragment - android:name="com.wireguard.android.ProfileListFragment" + <FrameLayout + android:id="@+id/list_container" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_weight="1" - android:tag="list" /> + android:layout_weight="1" /> <FrameLayout android:id="@+id/fragment_container" diff --git a/app/src/main/res/layout/profile_list_activity.xml b/app/src/main/res/layout/profile_list_activity.xml index f66a0cb3..41d772a7 100644 --- a/app/src/main/res/layout/profile_list_activity.xml +++ b/app/src/main/res/layout/profile_list_activity.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<fragment xmlns:android="http://schemas.android.com/apk/res/android" - android:name="com.wireguard.android.ProfileListFragment" +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/list_container" android:layout_width="match_parent" - android:layout_height="match_parent" - android:tag="list" /> + android:layout_height="match_parent" /> diff --git a/app/src/main/res/layout/profile_list_item.xml b/app/src/main/res/layout/profile_list_item.xml index 10d0c14b..22e93f5c 100644 --- a/app/src/main/res/layout/profile_list_item.xml +++ b/app/src/main/res/layout/profile_list_item.xml @@ -11,6 +11,7 @@ <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="?android:attr/activatedBackgroundIndicator" android:padding="16dp"> <TextView |