Как разместить EditText над кнопкой в LinearLayout?

#android #xml #android-layout #android-studio

#Android #xml #android-layout #android-studio

Вопрос:

Вот как это выглядит прямо сейчас:

введите описание изображения здесь

Как я хочу, чтобы это выглядело:

введите описание изображения здесь

Я хочу, чтобы текстовое поле, находящееся внутри кнопки (где проходит время), было доступно для редактирования. Как мне это сделать?

Код:

 <LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    // NAME 1
    <Button
        android:id="@ id/name1"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:background="@drawable/button_border"
        android:text="Name"
        android:onClick="changeName"/>
    // NAME 2
    <Button
        android:id="@ id/name2"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:background="@drawable/button_border"
        android:text="NAME"
        android:onClick="changeName"/>

</LinearLayout>
  

Спасибо и извините за простоту вопроса. Я просто любитель, пытающийся узнать больше.

Комментарии:

1. вам не нужно текстовое поле, добавьте time вместе с ‘ n’ к тексту кнопки, чтобы оно было под текстом

2. размещение содержимого поверх другого невозможно в линейной компоновке. Вместо этого используйте относительный макет

3. @VivekMishra когда-нибудь слышал о FrameLayout? в основном, это то, о чем весь макет.

4. @k0sh Я знаю о компоновке фрейма, но в чем проблема при использовании относительной компоновки?

Ответ №1:

Попробуйте этот способ, это поможет вам

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:background="#f0f8f0"
    android:layout_height="match_parent">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:weightSum="2"
        >
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_weight="1"
            android:gravity="center"
            android:background="#4472C4"
            >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Liam Ten"
            android:textStyle="bold"

            android:textColor="@android:color/white"
            android:textSize="16dp"
            />
            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:hint="01:03:66"
                android:textSize="16dp"
                android:textColorHint="@android:color/white"

                />
        </LinearLayout>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="Neil C"
            android:textSize="16dp"
            android:gravity="center"
            android:background="#4472C4"

            android:textColor="@android:color/white"
            android:layout_weight="1"
            android:textStyle="bold"
            />
    </LinearLayout>
</LinearLayout>
  

ВЫВОД

введите описание изображения здесь

Ответ №2:

Я предполагаю, что вы показываете время таймера, которое будет часто меняться. Лучше используйте этот подход.

 String myValue = String.format("%s n %s", "Liam Tan" , String.valueOf(yourTimingValue));

myButton.setText(myValue);
  

Ответ №3:

Для достижения этого есть два способа.

 name1.setText("Liam Taen"   "n"   dateTimeString);
  

а в xml добавить multiline=true к названию кнопки1

Во-вторых, используйте

 <LinearLayout root layout with orientation horizontal
  <LinearLayout width weight 1 where orientation vertical
     <Button  for name >
     <TextView for showing time>
  </LinearLayout end linearLayout>

  <LinearLayout width weight 1 where orientation vertical>
       <Button name2 to center by layout_gravity= center or gravity= center from parent
  </LinearLayout end second linearlayout>

</LinearLayout end root  linearlayout>