0

Ich möchte den Fokus auf FloatingActionButton richten, auch wenn meine Navigationsschublade geöffnet ist. Ich weiß, wenn die Navigation Schublade geöffnet ist, dann ist der Rest des Bildschirms unfocusable mit setScrimColor das können wir den Fokus auf Navigation Schublade reduzieren. Aber ich möchte FloatingActionButton fokussierbar machen.So stellen Sie den Fokus auf FloatingActionButton ein Auch wenn die Navigationsleiste in Android geöffnet ist

Bibliothek ist unten für ActionButton

https://github.com/shell-software/fab

den Screenshot unten für mein Problem.

Normal Bildschirm:

enter image description here

Klicken Sie auf FloatingButton:

enter image description here

Was ich wie diese Fokussierbare wollen:

enter image description here

activity_main.xml

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:fab="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="end" 
    android:fitsSystemWindows="true"> 

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     tools:context=".MainActivity"> 

     <com.example.softeng.animationf.fabdirectory.ActionButton 
      android:id="@+id/fab_activity_action_button" 
      style="@style/fab_action_button_style" 
      fab:type="MINI"/> 


    </RelativeLayout> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/navigation_view" 
     android:layout_width="200dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="end"> 

     <RelativeLayout 
      android:id="@+id/right_navigation" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="#4D4D4D"> 

     </RelativeLayout> 

    </android.support.design.widget.NavigationView> 

</android.support.v4.widget.DrawerLayout> 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    DrawerLayout drawerLayout; 
    NavigationView navigation_view; 

    int count = 1; 

    private boolean isOutSideClicked = false; 


    RelativeLayout relativeLayout; 
    private ActionButton actionButton; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     assert getSupportActionBar() != null; 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 

     drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); 
     /* drawerLayout.setScrimColor(Color.parseColor("#00000000"));*/ 
     navigation_view = (NavigationView)findViewById(R.id.navigation_view); 
     relativeLayout = (RelativeLayout)findViewById(R.id.right_navigation); 

     actionButton = (ActionButton) findViewById(R.id.fab_activity_action_button); 

     actionButton.setImageResource(R.drawable.fab_plus_icon); 
     actionButton.setRippleEffectEnabled(true); 
     actionButton.setShadowRadius(0); 
     actionButton.setShadowXOffset(0); 
     actionButton.setShadowYOffset(0); 
     actionButton.setButtonColor(Color.parseColor("#0072BA")); 
     actionButton.setButtonColorPressed(Color.parseColor("#004F80")); 
     actionButton.setShadowRadius(10); 

     actionButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       if(count == 1) { 
        actionButton.moveLeft(200); 
        actionButton.setImageResource(R.drawable.close); 
        drawerLayout.openDrawer(Gravity.RIGHT); 
        count = count - 1; 
       }else if(count == 0){ 

        closeFab(); 


       } 
       else { 

       } 
      } 
     }); 

    } 

    private void closeFab(){ 
     actionButton.move(new MovingParams(MainActivity.this, 200 , 0)); 
     actionButton.setImageResource(R.drawable.fab_plus_icon); 
     count = count + 1; 
     drawerLayout.closeDrawer(Gravity.RIGHT); 
    } 

    @Override 
    public boolean dispatchTouchEvent(MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_UP) { 
      if (drawerLayout.isDrawerOpen(navigation_view)) { 

       View content = findViewById(R.id.drawer_layout); 
       int[] contentLocation = new int[2]; 
       content.getLocationOnScreen(contentLocation); 
       Rect rect = new Rect(contentLocation[0], 
         contentLocation[1], 
         contentLocation[0] + content.getWidth(), 
         contentLocation[1] + content.getHeight()); 



       if (!(rect.contains((int) event.getX(), (int) event.getY()))) { 
        isOutSideClicked = true; 
       } else { 
        isOutSideClicked = false; 
        this.closeFab(); 
       } 

      } 
     } 

     return super.dispatchTouchEvent(event); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

Die abgerundeten Bild bedeutet FloatingActionButton i Fokussierbare wollen. Jede Hilfe wird geschätzt.

Antwort

3

die Lösung Ihrer gefunden Problem. Ich habe einige Änderungen in Ihrem Layout sowie in Java-Code vorgenommen. Bitte verweisen Sie und lassen Sie mich wissen, wenn es irgendwelche Fragen gibt.

MainActivity.java

public class MainActivity extends AppCompatActivity { 

DrawerLayout drawerLayout; 
NavigationView navigation_view; 
ImageView view; 
int count = 1; 

private boolean isOutSideClicked = false; 


RelativeLayout relativeLayout; 
private ActionButton actionButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    view = (ImageView)findViewById(R.id.view); 

    if(getSupportActionBar() != null) { 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 
    } 


    drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); 
    drawerLayout.setScrimColor(Color.parseColor("#00000000")); 
    navigation_view = (NavigationView) findViewById(R.id.navigation_view); 
    relativeLayout = (RelativeLayout)findViewById(R.id.right_navigation); 

    actionButton = (ActionButton) findViewById(R.id.fab_activity_action_button); 

    actionButton.setImageResource(R.drawable.fab_plus_icon); 
    actionButton.setRippleEffectEnabled(true); 
    actionButton.setShadowRadius(0); 
    actionButton.setShadowXOffset(0); 
    actionButton.setShadowYOffset(0); 
    actionButton.setButtonColor(Color.parseColor("#0072BA")); 
    actionButton.setButtonColorPressed(Color.parseColor("#004F80")); 
    actionButton.setShadowRadius(10); 

    actionButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if(count == 1) { 
       actionButton.moveLeft(200); 
       actionButton.setImageResource(R.drawable.fab_plus_icon); 
       drawerLayout.openDrawer(Gravity.RIGHT); 
       view.setVisibility(View.VISIBLE); 
       actionButton.bringToFront(); 
       count = count - 1; 
      }else if(count == 0){ 

       closeFab(); 
      } 
      else { 

      } 
     } 
    }); 

} 

private void closeFab(){ 
    view.setVisibility(View.GONE); 
    actionButton.move(new MovingParams(MainActivity.this, 200 , 0)); 
    actionButton.setImageResource(R.drawable.fab_plus_icon); 
    count = count + 1; 
    drawerLayout.closeDrawer(Gravity.RIGHT); 
} 
// dispatchTouchEvent is as it was not putting code here..!! 
} 

activity_main.xml

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:fab="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_gravity="end" 
android:fitsSystemWindows="true"> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 

    <ImageView 
     android:id="@+id/view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#80000000" 
     android:visibility="gone" /> 

    <com.example.softeng.animationf.fabdirectory.ActionButton 
     android:id="@+id/fab_activity_action_button" 
     style="@style/fab_action_button_style" 
     android:layout_gravity="bottom|right" 
     fab:type="MINI"/> 


</RelativeLayout> 

<android.support.design.widget.NavigationView 
    android:id="@+id/navigation_view" 
    android:layout_width="200dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="end"> 

    <RelativeLayout 
     android:id="@+id/right_navigation" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#4D4D4D"> 

    </RelativeLayout> 

</android.support.design.widget.NavigationView> 

</android.support.v4.widget.DrawerLayout> 

Bitte verwenden Sie diesen gleichen Code. Ich empfehle Ihnen, Kopieren-Einfügen, weil dies genau so funktioniert, wie Sie wollten .. !!

1

Verwendung Frame-Layout als Eltern Viewgroup wie es verwendet z Index platzieren, so

FAB Floating Action-Schaltfläche am Ende

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
> 
<android.support.v4.widget.DrawerLayout 

    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 


    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header_main" 
     app:menu="@menu/activity_main_drawer" /> 

</android.support.v4.widget.DrawerLayout> 

    <android.support.design.widget.FloatingActionButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@android:drawable/ic_menu_search" 
     android:elevation="50dp" 
     android:layout_gravity="left|bottom" /> 
</FrameLayout> 

Floating button is clickable

+0

in Ihrem screenshot Ich möchte die Nachricht 'FloatingActionButton' focuasble siehe meine' figure no: 3' – Ironman

+0

Ja seine focasble siehe das Suchsymbol FAB, vergiss das Nachrichtensymbol, was ist das Problem? – Gaurav

+0

Ich möchte nicht die Nachricht schwimmenden Knopf in Ihrem Screenshot suchen – Ironman

Verwandte Themen