#android #kotlin
Вопрос:
РЕДАКТИРОВАТЬ — Добавление полного кода
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.camera.view.PreviewView
android:id="@ id/viewFinder"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@ id/barsContainer"
android:layoutDirection="rtl"
app:layout_constraintBottom_toBottomOf="parent">
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.constraintlayout.widget.ConstraintLayout>
class MainActivity : AppCompatActivity() {
private var barsIndex = BooleanArray(30) { false }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val viewBinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(viewBinding.root)
val layoutParams =
LinearLayout.LayoutParams(0, 80, 1f)
viewBinding.barsContainer.weightSum = (barsIndex.size).toFloat()
for (index in barsIndex.indices) {
val barView = View(this)
// layoutParams.setMargins(60, 60, 60, 60)
barView.setBackgroundColor(Color.parseColor("#FFFFFF"))
barView.layoutParams = layoutParams
viewBinding.barsContainer.addView(barView)
}
}
}
Ну, я много искал и нашел много ответов на этот вопрос, но до сих пор он у меня не работал.
Я хочу добавить несколько полос одинаковой ширины в линейный вывод. это то, что я получил до сих пор:
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@ id/barsContainer"
android:layoutDirection="rtl"
app:layout_constraintBottom_toBottomOf="parent">
</androidx.appcompat.widget.LinearLayoutCompat>
и В моей Деятельности.кт:
viewBinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(viewBinding.root)
val layoutParams = LinearLayout.LayoutParams(0, 80, 1f)
for (index in barsIndex.indices) {
val barView = View(this)
barView.setBackgroundColor(Color.parseColor("#FFFFFF"))
barView.layoutParams = layoutParams
viewBinding.barsContainer.addView(barView, index)
}
viewBinding.barsContainer.requestLayout()
тем не менее, он не учитывает вес (третий параметр), и если я добавлю немного ширины, это сработает, но это не то, что я хочу.
Я пробовал и 0, и LinearLayout.LayoutParams.WRAP_CONTENT
для ширины это все равно не работает.
добавление поля для детей тоже не работает!
Любая помощь будет признательна
Ответ №1:
я просто отредактирую часть вашего кода, чтобы просто отредактировать цвет и высоту, вам просто нужно добавить эту строку для цикла
barsContainer.weightSum = (barsIndex.size).toFloat()
Чтобы убедиться, что он берет правильные веса, чтобы он также правильно разделил макет
val barsContainer = findViewById<LinearLayoutCompat>(R.id.barsContainer)
val barsIndex = arrayListOf<Int>(1, 2, 3, 4)
barsContainer.weightSum = (barsIndex.size).toFloat()
val layoutParams = LinearLayoutCompat.LayoutParams(0, 150, 1f)
for (index in barsIndex.indices) {
val barView = View(this)
barView.setBackgroundColor(Color.parseColor("#ff${(index 1)*22}00"))
barView.layoutParams = layoutParams
barsContainer.addView(barView,index)
}
val barsIndex = arrayListOf<Int>(1, 2, 3, 4)
barsContainer.weightSum = (barsIndex.size).toFloat()
val layoutParams = LinearLayoutCompat.LayoutParams(0, 150, 1f)
layoutParams.marginEnd=1
layoutParams.marginStart=1
for (index in barsIndex.indices) {
val barView = View(this)
barView.setBackgroundColor(Color.parseColor("#ff${(index 1)*22}00"))
barView.layoutParams = layoutParams
barsContainer.addView(barView,index)
}
Комментарии:
1. Результат в значительной степени соответствует тому, что я хочу, но я использовал ваш код, даже изменил привязку к классическим представлениям поиска, все равно он не отображается! может быть, я делаю что-то не так!? пока вы этим занимаетесь, можете ли вы добавить как 1dp-поле между представлениями?
2. я просто редактирую его @ArmanMomeni
3. Спасибо, чувак, я все еще не могу понять, почему это не работает на моей стороне
4. опубликуйте полный код и полный xml-код plase
5. Добавлен полный код.