Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7962403

Browse files
authored
Merge pull request#80 from Resgrid/develop
Develop
2 parents1d59e26 +443727d commit7962403

File tree

51 files changed

+3705
-451
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+3705
-451
lines changed
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
#Android System Navigation Bar Fix for New Call Screen
2+
3+
##Issue Description
4+
5+
On Android tablets, the new call view did not properly handle the system navigation bar, causing it to overlap with the bottom buttons (Cancel and Create). This made the buttons difficult or impossible to tap, significantly impacting usability on Android tablet devices.
6+
7+
##Root Cause
8+
9+
The issue was caused by:
10+
11+
1.**Lack of safe area handling**: The new call screen did not properly account for system UI insets, particularly the bottom navigation bar on Android tablets.
12+
2.**Missing platform-specific padding**: No additional spacing was provided for Android devices that have persistent navigation bars.
13+
3.**ScrollView content not accounting for system bars**: The ScrollView's content area extended into the system navigation bar space.
14+
15+
##Solution Implementation
16+
17+
###1. Added Safe Area Insets Support
18+
19+
```typescript
20+
import {useSafeAreaInsets }from'react-native-safe-area-context';
21+
22+
// Inside component
23+
const insets=useSafeAreaInsets();
24+
```
25+
26+
###2. Enhanced ScrollView with Bottom Padding
27+
28+
```typescript
29+
<ScrollView
30+
className="flex-1 px-4 py-6"
31+
contentContainerStyle={{paddingBottom:Math.max(insets.bottom+20,40) }}
32+
showsVerticalScrollIndicator={false}
33+
>
34+
```
35+
36+
The`contentContainerStyle` with`paddingBottom` ensures that:
37+
- Content can scroll past the system navigation bar
38+
- Minimum 40px padding is always applied
39+
- Additional padding accounts for the actual navigation bar height plus 20px buffer
40+
41+
###3. Platform-Specific Bottom Button Spacing
42+
43+
```typescript
44+
<Box
45+
className="mb-6 flex-row space-x-4"
46+
style={{
47+
marginBottom:Platform.OS==='android'?Math.max(insets.bottom+20,30):24
48+
}}
49+
>
50+
```
51+
52+
This ensures the action buttons (Cancel/Create) have sufficient margin on Android:
53+
- Adds the navigation bar height plus 20px buffer on Android
54+
- Maintains default 24px margin on other platforms
55+
- Ensures minimum 30px margin on Android even if insets are not available
56+
57+
###4. Full-Screen Modal Safe Area Support
58+
59+
```typescript
60+
{showLocationPicker&& (
61+
<View
62+
style={{
63+
position:'absolute',
64+
top:0,
65+
left:0,
66+
right:0,
67+
bottom:0,
68+
zIndex:1000,
69+
paddingBottom:Platform.OS==='android'?insets.bottom:0,
70+
}}
71+
>
72+
```
73+
74+
Applied safe area padding to overlay modals to ensure they also respect the system navigation bar.
75+
76+
## Key Changes Made
77+
78+
1. **Added imports**:
79+
-`Platform` from 'react-native'
80+
-`useSafeAreaInsets` from 'react-native-safe-area-context'
81+
82+
2. **Enhanced ScrollView**:
83+
- Added`contentContainerStyle` with dynamic bottom padding
84+
- Added`showsVerticalScrollIndicator={false}` for better visual appearance
85+
86+
3. **Improved button container**:
87+
- Added platform-specific`marginBottom` style
88+
- Ensured sufficient spacing above Android navigation bar
89+
90+
4. **Updated overlay modals**:
91+
- Added platform-specific bottom padding to full-screen location picker
92+
93+
## Testing Verification
94+
95+
To verify the fix works correctly:
96+
97+
1. **Android Tablet Testing**:
98+
- Open the new call screen on an Android tablet
99+
- Scroll to the bottom of the form
100+
- Verify both Cancel and Create buttons are fully visible and tappable
101+
- Test with different Android navigation bar configurations (gesture vs. button navigation)
102+
103+
2. **iOS Testing**:
104+
- Verify the screen still works correctly on iOS devices
105+
- Check that no extra unwanted spacing is added
106+
107+
3. **Modal Testing**:
108+
- Open the location picker modal
109+
- Verify it doesn't overlap with system navigation elements
110+
111+
## Benefits
112+
113+
- **Improved Usability**: Bottom buttons are now fully accessible on Android tablets
114+
- **Cross-Platform Consistency**: Maintains proper spacing across different devices
115+
- **Future-Proof**: Uses React Native's safe area system for automatic adaptation
116+
- **Minimal Impact**: Changes are localized and don't affect other screens
117+
118+
## Related Components
119+
120+
This fix pattern can be applied to other screens experiencing similar issues:
121+
- Any screen with bottom action buttons
122+
- Full-screen modals and overlays
123+
- Forms with submit buttons at the bottom
124+
125+
## Dependencies
126+
127+
-`react-native-safe-area-context`: Already installed and configured in the project
128+
- No additional dependencies required

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp