#android #android-layout #android-constraintlayout
Вопрос:
Я попытался установить пространство между двумя видами (горизонтальным и вертикальным), как это
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Fragments.SetProfileFragment">
<TextView
android:id="@ id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:text="Test 1"
android:textSize="20sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@ id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="4dp"
android:text="Test 2"
android:textSize="20sp"
app:layout_constraintStart_toEndOf="@id/textView1"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Но я хочу, чтобы расстояние между ними TextViews
составляло 1% от экрана. Возможно ли это?
Комментарии:
1. Для этого вы можете добавить поле во время выполнения… например, вы можете узнать ширину и высоту экрана во время выполнения и добавить 1% поля к вашему представлению
2. значит, я должен программно установить маржу?
3. ДА…………
4. большое спасибо , но это своего рода сложность, я хочу, чтобы макет отвечал на запросы, если я ограничу пространство в коде, это нормально ?
5. Вместо полей вы также можете использовать отступы…пожалуйста, проверьте приведенный ниже код, который я добавил..
Ответ №1:
но я хочу, чтобы расстояние между двумя текстовыми изображениями составляло 1% процента экрана. возможно ли это?
- Для установки ограничения start amp; top для родительского элемента: Используйте горизонтальные и вертикальные направляющие с процентами от корня
ConstraintLayout
:1% считается равным 0,01, так как 1% равен ширине всего экрана >>> Поэтому используйте
app:layout_constraintGuide_percent="0.01"
Вы можете применить ограничения к
textview1
, и, чтобы не повторяться, вы можете ограничитьtextView2
базовуюtextview1
линию . - Для установки 1% ширины экрана между текстовыми изображениями: Используйте пространство, ограниченное до конца
textView1
, в процентах от 1% ширины экрана:app:layout_constraintWidth_percent="0.01"
. Затем ограничьтеtextView2
пространство, а неtextView
.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Fragments.SetProfileFragment">
<androidx.constraintlayout.widget.Guideline
android:id="@ id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.01" />
<androidx.constraintlayout.widget.Guideline
android:id="@ id/guideline2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.01" />
<TextView
android:id="@ id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test 1"
android:textSize="20sp"
app:layout_constraintStart_toStartOf="@id/guideline"
app:layout_constraintTop_toTopOf="@id/guideline2" />
<Space
android:id="@ id/space"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintStart_toEndOf="@id/textView1"
app:layout_constraintWidth_percent="0.01" />
<TextView
android:id="@ id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test 2"
android:textSize="20sp"
app:layout_constraintBaseline_toBaselineOf="@id/textView1"
app:layout_constraintStart_toEndOf="@id/space"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Ответ №2:
Вы можете попробовать этот код
val displayMetrics = DisplayMetrics()
windowManager.defaultDisplay.getMetrics(displayMetrics)
val width = displayMetrics.widthPixels
val height = displayMetrics.heightPixels
val widthPer = (1*100)/width //1% percentage width
val heightPer = (1*100)/height //1% percentage height
textView1.setPadding(widthPer, heightPer, widthPer, heightPer) //Adding padding
textView2.setPadding(widthPer, heightPer, widthPer, heightPer) //Adding padding