Android SeekBar не может быть полной ширины, даже если в AppCompat 23.1.0 установлен отступ 0
Когда я обновляю lib поддержки Android с 23.0.1 до 23.1.0, я обнаруживаю, что SeekBar больше не является полной шириной.
это тестовый XML-файл:
<?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>
Хорошо работает при поддержке lib 23.0.1, как на следующем скриншоте. SeekBar имеет заполнение по умолчанию, когда я устанавливаю заполнение вручную =0, оно может быть полной ширины. и AppCompatSeekBar еще не существует.
но при поддержке lib 23.1.0, я установил, сколько отступов, SeekBar и AppCompatSeekBar не имеют никаких изменений, как на следующем скриншоте.
Итак, является ли это ошибкой поддержки lib, любое тело сталкивалось с этой проблемой и как ее решить?
спасибо ~!
Обновить:
Это полностью смутило меня, у меня просто еще один тест, я создаю новый проект, использую ли я AppCompat 23.0.1 или 23.1.0, SeekBar также не может быть полной ширины после set padding=0, (compileSdkVersion равен 23, buildToolsVersion равен "23.0.1", targetSdkVersion - 23). Во всяком случае, я хочу знать, как сделать SeekBar полной ширины, когда set padding =0 не работает.
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'
}
7 ответов
Наконец, у меня просто внезапная мысль почему бы не попробовать изменить его с помощью кода Java. Оно работает! Ниже приведен пример кода:
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);
// ...
}
Попробуйте добавить параметры "PadingStart" и "PaddingEnd" в 0dp в файле XML. Если ваше приложение совместимо с Rtl, вам нужно будет добавить их, чтобы визуализировать seekBar без отступов, иначе оно будет отображаться с отступами, даже если вы используете его на языке Ltr.
Надеюсь, поможет. С уважением
Попробуй это
android:paddingStart="0dp"
android:paddingEnd="0dp"
Как упоминал Дидак, вы можете установить отступ в 0 в xml.
Но убедитесь, что вы установили отступы после того, как progressTint
или же progressDrawable
,
У меня была похожая проблема (где я устанавливал progressDrawable). После того, как я установил отступ в 0 после установки progressDrawable
, seekbar
заполнение прошло
Если вы ищете Bar.setPadding(0, 0, 0, 0); может быть, большой палец не может показать полный complete Во-первых, вы должны найти, какой результат это. На самом деле, в стиле бара поиска, вы можете найти это.
<style name="Base.Widget.AppCompat.SeekBar" parent="android:Widget">
<item name="android:indeterminateOnly">false</item>
<item name="android:progressDrawable">@drawable/abc_seekbar_track_material</item>
<item name="android:indeterminateDrawable">@drawable/abc_seekbar_track_material</item>
<item name="android:thumb">@drawable/abc_seekbar_thumb_material</item>
<item name="android:focusable">true</item>
<item name="android:paddingLeft">16dip</item>
<item name="android:paddingRight">16dip</item>
</style>
поэтому измените стиль с paddingLeft и paddingRight
Вы можете установить отступ в 0, но тогда вам нужно android:clipChildren="false" в макете контейнера. Или вы можете использовать отрицательные поля на SeekBar.