2015-11-02 4 views
17

Wenn ich Android-Unterstützung lib von 23.0.1 bis 23.1.0 aktualisieren, finde ich die SeekBar ist nicht die volle Breite mehr.Android SeekBar kann nicht die volle Breite sein, selbst Padding 0 in AppCompat 23.1.0

dies ist der Test XML-Datei:

<?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> 

Es funktioniert gut unter Unterstützung lib 23.0.1, wie Screenshot folgen. SeekBar hat Standard-Padding, wenn ich padding = 0 manuell einstelle, kann es die volle Breite haben. und AppCompatSeekBar ist noch nicht vorhanden.

enter image description here

aber unter Unterstützung lib 23.1.0, ob ich fest, wie viel von Polstern, SeekBar und AppCompatSeekBar keine jede mögliche Änderung hat, wie Screenshot folgen.

enter image description here

so ist dies der Fehler der Unterstützung lib, jede Stelle dieses Problem begegnen und wie es zu lösen?

danke ~!

Update:
Es hat mich total verwirrt, ich habe gerade einen weiteren Test habe ich ein neues Projekt an, ob ich AppCompat 23.0.1 oder 23.1.0 verwenden, SeekBar weder volle Breite nach Satz Polsterung sein kann = 0, (Die compileSdkVersion ist 23, buildToolsVersion ist "23.0.1", targetSdkVersion ist 23). Wie auch immer, ich möchte wissen, wie man SeekBar volle Breite macht, wenn Padding = 0 nicht funktioniert.

die 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' 
} 

Antwort

26

endlich, ich habe nur einen plötzlichen Gedanken. Warum nicht versuchen, es mit Java-Code zu modifizieren. Es klappt! Folgendes ist der Beispielcode:

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 Set weg !! Ich habe versucht, Android: padding = "0DP" in Stil und in Sicht XML und dies hat nicht geholfen. Vielen Dank! –

+0

Es funktioniert, aber weiß jeder, was eigentlich vor sich geht und warum das passiert? – NioX5199

+0

Wir können nicht gleich wirksam werden und dadurch das Padding in XML setzen? –

11

Versuchen Sie, die Parameter "PadingStart" und "PaddingEnd" Hinzufügen in der XML-Datei 0DP. Wenn Ihre App mit Rtl kompatibel ist, müssen Sie diese hinzufügen, um die seekBar ohne Padding zu visualisieren, andernfalls wird sie mit Padding angezeigt, auch wenn Sie sie in einer Ltr-Sprache verwenden.

Ich hoffe, es hilft. Grüße

+0

Das hat für mich funktioniert. – March3April4

+2

Beachten Sie jedoch, dass bei einer auf 0dp eingestellten Auffüllung der Daumen abgeschnitten wird, wenn er sich an den äußeren Positionen befindet (z. B. wenn die Suchleiste die gesamte Breite des Bildschirms einnimmt). – Anton

2

Wie Didac erwähnt, können Sie die Auffüllung auf 0 in Xml setzen.

Aber stellen Sie sicher, dass Sie die Auffüllung festlegen, nachdem Sie die progressTint oder progressDrawable festgelegt haben.

Ich hatte ein ähnliches Problem (wo ich progressDrawable setzte). Sobald ich die Polsterung als 0 nach der progressDrawable Inbetriebn hat die seekbar Polsterung

7

diese Attribute in XML

android:paddingStart="0dp"