Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

293
Vistas
Android P visibilidadawareimagebutton.setVisibility solo se puede llamar desde el mismo grupo de bibliotecas

Estoy tratando de usar el nuevo Android P FloatingActionButton que es parte de com.google.android.material.floatingactionbutton.FloatingActionButton y recibo esta advertencia:

VisibilityAwareImageButton.setVisibility solo se puede llamar desde el mismo grupo de bibliotecas (groupId=com.google.android.material)

 import com.google.android.material.floatingactionbutton.FloatingActionButton import android.view.View class MainActivity : AppCompatActivity() { lateinit var demoFab: FloatingActionButton override fun onCreate(savedInstanceState: Bundle?) { demoFab = findViewById(R.id.demoFab) demoFab.visibility = View.VISIBLE // the warning is here } }

ingrese la descripción de la imagen aquí

Intenté buscar y el único resultado de la búsqueda se refiere a la respuesta a los cambios de visibilidad de la interfaz de usuario:

Responda a los cambios de visibilidad de la interfaz de usuario

Intenté explorar cómo podía ver si había un valor int VISIBLE en ese paquete com.google.android.material y el único que encontré fue com.google.android.material.floatingactionbutton.FloatingActionButton.VISIBLE , pero la advertencia aún restos.

build.gradle de nivel superior

 buildscript { ext.kotlin_version = '1.2.41' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.0-alpha14' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "com.google.gms:oss-licenses:0.9.2" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() mavenCentral() maven { url "http://oss.sonatype.org/content/repositories/snapshots/" } } } task clean(type: Delete) { delete rootProject.buildDir }

Nivel de proyecto build.gradle

 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'com.google.gms.oss.licenses.plugin' android { compileSdkVersion 'android-P' defaultConfig { applicationId "com.codeforsanjose.maps.pacmap" minSdkVersion 21 targetSdkVersion 'P' versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } splits { abi { enable true reset() include 'arm64-v8a', 'armeabi', 'armeabi-v7a', 'mips', 'x86', 'x86_64' universalApk false } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.0.0-alpha1' implementation 'androidx.constraintlayout:constraintlayout:1.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.0-alpha2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha2' implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:5.5.2' //implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:6.1.0' implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-locationlayer:0.5.0' implementation 'com.mapbox.mapboxsdk:mapbox-android-navigation:0.13.0' implementation 'com.mapbox.mapboxsdk:mapbox-android-navigation-ui:0.13.0' implementation 'com.google.android.gms:play-services-oss-licenses:15.0.1' implementation 'com.google.code.gson:gson:2.8.2' implementation 'com.squareup.moshi:moshi:1.5.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0' implementation 'com.squareup.retrofit2:converter-gson:2.3.0' implementation 'com.squareup.retrofit2:converter-moshi:2.4.0' implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0" implementation 'com.squareup.retrofit2:retrofit:2.4.0' implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' implementation 'io.reactivex.rxjava2:rxkotlin:2.2.0' }

editar:

Debo señalar que estoy usando Android Studio versión 3.2 canary 14. Parece que se han informado algunos errores para esta versión, y sospecho que este es uno de ellos.

editar 2:

El problema aún existe con Android Studio versión 3.2 canary 15, pero encontré una solución usando show() y hide()

 override fun onCreate(savedInstanceState: Bundle?) { demoFab = findViewById(R.id.demoFab) demoFab.show() // this works and doesn't have the warning }
over 4 years ago · Santiago Trujillo
8 Respuestas
Responde la pregunta

0

Usando el Método 1

 demoFab.show(); // in place of visible demoFab.hide(); // in place of Invisible suppress the warning/error for me.

y Método 2

 @SuppressLint("RestrictedApi") // also suppressed the warning private void setUp() { .... }

actualizar:

Método 3:

 demoFab.setVisibility(View.GONE); demoFab.setVisibility(View.INVISIBLE); demoFab.setVisibility(View.VISIBLE);

Método 4:

 demoFab.visibility = View.GONE demoFab.visibility = View.INVISIBLE demoFab.visibility = View.VISIBLE
over 4 years ago · Santiago Trujillo Denunciar

0

Para Kotlin tengo un método de extensión.

 fun viewsVisibility(visibility: Int, vararg views: View) { for (view in views) { view.visibility = visibility } }

Luego, en el código, puede hacer lo siguiente

 viewsVisibility(View.VISIBLE, demoFab) viewsVisibility(View.GONE, demoFab) viewsVisibility(View.INVISIBLE, demoFab, addFab, removeFab)

El error desaparecerá y esto brinda la flexibilidad para cualquier estado de visibilidad además de tomar una lista de vistas para manejar. Muchas veces necesito manejar más de una vista a la vez, como se muestra en la línea de ejemplo final.

over 4 years ago · Santiago Trujillo Denunciar

0

Utilizar:

 myButton.hide(); myClearButton.hide();

Un ejemplo típico sería:

Ocultar y mostrar botones cuando el usuario está escribiendo o tiene el foco en un recurso EditText:

compruebe si el usuario está escribiendo o tiene el foco:

 mCommentField.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean hasFocus) { if (hasFocus) { //user has focused showBts(); } else { //focus has stopped perform your desired action hideButtons(); } } });

Ocultar y mostrar métodos de botón:

 private void hideButtons() { mCommentButton.hide(); mClearButton.hide(); } private void showBts() { mCommentButton. show(); mClearButton.show();

Y en su xml, configure los botones como invisibles de forma predeterminada para que solo se muestren/muestren cuando un usuario tenga el foco o esté escribiendo:

 android:visibility="invisible"

Mejores prácticas:

 android:visibility="Gone"

El uso de la visibilidad eliminada significa que su vista no ocupa ningún espacio en su diseño, mientras que "invisible" ocupará un espacio innecesario en su diseño.

En este ejemplo: Mis Vistas están en un ViewHolder y hago referencia a los botones de un fragmento con una vista de reciclaje

over 4 years ago · Santiago Trujillo Denunciar

0

Parece funcionar bien solo para mostrarlo en una vista.

(mFloatingActionButton as View).visibility = INVISIBLE

Por supuesto, debe recordar que la visibilidad puede afectar a otros componentes, por lo que probablemente debería usar show() y hide() al mismo tiempo para asegurarse de que se notifique el cambio a otros componentes.

over 4 years ago · Santiago Trujillo Denunciar

0

Esto también funciona:

 findViewById(R.id.fab).setVisibility(View.GONE);
over 4 years ago · Santiago Trujillo Denunciar

0

if(data){ fragmentPendingApprovalDetailsBinding.fabPendingList.show(); }else { fragmentPendingApprovalDetailsBinding.fabPendingList.hide(); }
over 4 years ago · Santiago Trujillo Denunciar

0

Para com.google.android.material.floatingactionbutton.FloatingActionButton

Visibilidad

Usa los métodos show y hide para animar la visibilidad de un FloatingActionButton. La animación de mostrar hace crecer el widget y lo desvanece, mientras que la animación de ocultar reduce el widget y lo desvanece.

Fuente: https://material.io/develop/android/components/floating-action-button/

Para android.support.design.widget.FloatingActionButton use el método setVisibility()

over 4 years ago · Santiago Trujillo Denunciar

0

Para mí, los métodos anteriores no funcionaron, así que creé una función de extensión para que funcione.

 fun View.showView() { this.visibility = View.VISIBLE } fun View.hideView() { this.visibility = View.GONE }

ahora llama como

 binding.fabAdded.showView()
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda