2015-11-02 23 views
17

quando aggiorno la libreria di supporto Android da 23.0.1 a 23.1.0, trovo che SeekBar non è più a tutta larghezza.Android SeekBar non può essere a tutta larghezza anche impostato padding 0 in AppCompat 23.1.0

Questo è il file XML di test:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:divider="@drawable/space_divider" 
    android:orientation="vertical" 
    android:padding="8dp" 
    android:showDividers="middle"> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="20dp" 
     android:background="@android:color/black"/> 

    <!-- default SeekBar --> 
    <SeekBar 
     android:layout_width="match_parent" 
     android:layout_height="10dp" 
     android:progress="50" 
     android:progressTint="@android:color/holo_red_dark"/> 

    <!-- padding=0 --> 
    <SeekBar 
     android:layout_width="match_parent" 
     android:layout_height="10dp" 
     android:padding="0dp" 
     android:progress="50" 
     android:progressTint="@android:color/holo_red_dark"/> 

    <!-- padding=40 --> 
    <SeekBar 
     android:layout_width="match_parent" 
     android:layout_height="10dp" 
     android:padding="40dp" 
     android:progress="50" 
     android:progressTint="@android:color/holo_red_dark"/> 

    <android.support.v7.widget.AppCompatSeekBar 
     android:layout_width="match_parent" 
     android:layout_height="10dp" 
     android:padding="0dp" 
     android:progress="50"/> 

</LinearLayout> 

Funziona bene sotto il supporto lib 23.0.1, come schermata seguente. SeekBar ha il padding predefinito, quando imposto padding = 0 manual, può essere a tutta larghezza. e AppCompatSeekBar non esiste ancora.

enter image description here

ma sotto il supporto lib 23.1.0, se io impostare la quantità di imbottitura, SeekBar e AppCompatSeekBar non ha alcun cambiamento, come schermata seguente.

enter image description here

così, è questo il bug di supporto lib, qualsiasi organismo incontrare questo problema e come risolverlo?

grazie ~!

aggiornamento:
E 'del tutto mi ha confuso, ho solo un altro test, ho creare un nuovo progetto, se io uso AppCompat 23.0.1 o 23.1.0, SeekBar nessuno dei due può essere di grande ampiezza dopo imbottiture = 0, (la versione compileSdkVersion è 23, buildToolsVersion è "23.0.1", targetSdkVersion è 23). comunque, voglio sapere come creare SeekBar a larghezza intera quando set padding = 0 non funziona.

il build.gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

    defaultConfig { 
     applicationId "com.test.seekbar" 
     minSdkVersion 14 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.0.1' 
} 

risposta

26

finalmente, ho solo un pensiero improvviso. perché non provare a modificarlo con il codice java. Funziona! Di seguito è riportato il codice di esempio:

protected void initViews(Context context) { 
    LayoutInflater.from(context).inflate(getLayoutResId(), this); 
    ButterKnife.bind(this); 

    // set style, just once 
    seekBar.setProgress(0); 
    seekBar.setMax(0); 

    seekBar.setPadding(0, 0, 0, 0); 

    // ... 
} 
+0

ohh .. Guy !! Ho provato Android: padding = "0dp" in stile e in vista xml e questo non ha aiutato. Grazie! –

+0

Funziona ma nessuno sa cosa sta succedendo e perché succede? – NioX5199

+0

Non è possibile ottenere equi-efficace, quindi impostare il padding in XML? –

11

Prova ad aggiungere i parametri "PadingStart" e "PaddingEnd" per 0DP nel file xml. Se la tua app è compatibile con Rtl dovrai aggiungerli per visualizzare la barra di ricerca senza padding, altrimenti mostrerà con padding anche se la usi in un linguaggio Ltr.

Spero che aiuti. Saluti

+0

Questo ha funzionato per me. – March3April4

+2

Tuttavia, si tenga presente che il padding impostato su 0dp toccherà il pollice quando si trova nelle posizioni esterne (ad esempio quando la barra di ricerca occupa l'intera larghezza dello schermo). – Anton

2

Come detto da Didac, è possibile impostare il riempimento su 0 in xml.

Ma assicurati di impostare il padding dopo aver impostato progressTint o progressDrawable.

Ho avuto un problema simile (dove stavo impostando progressDrawable). Una volta che ho impostato l'imbottitura come 0 dopo aver impostato il progressDrawable, l'imbottitura SeekBar è andato

7

Impostare questa attributi in XML

android:paddingStart="0dp"