繁体   English   中英

如何根据android中的设备宽度设置edittext的宽度?

[英]how to set width of edittext according to the device's width in android?

我正在尝试根据设备的大小设置edittext的大小 - 200像素(两个按钮)

试过:

Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int width = size.x - 200;

        LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(width, LinearLayout.LayoutParams.MATCH_PARENT);

        editTextmessage = findViewById(R.id.input_chat_message);

        editTextmessage.setLayoutParams(lparams);

        editTextmessage.getLayoutParams().width = width;

和: editTextmessage.setWidth(size.x - 200); 有什么解决方案吗? ps:在问这个问题之前,我已经用谷歌搜索甚至搜索过stackoverflow 编辑:activity_chat.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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=".ChatActivity">

    <include
        android:id="@+id/chat_toolbar"
        layout="@layout/app_bar_layout"

        />

    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/chat_toolbar"
        android:id="@+id/chat_list"
        android:layout_above="@id/private_chat_linear_layout"/>

    <LinearLayout
        android:id="@+id/private_chat_linear_layout"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true">

        <EditText
            android:id="@+id/input_chat_message"
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:hint="@string/write_your_message_here"
            android:padding="0dp"
            android:background="@drawable/inputs"/>

        <ImageButton
            android:id="@+id/send_message_button_chat"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/send_message" />
        <ImageButton
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:id="@+id/send_file_button_chat"
            app:srcCompat="@drawable/share_file"
            android:background="#D6D7D7"
            />

    </LinearLayout>




</RelativeLayout>

如果需要,请索取更多代码

编辑:感谢@Deepika 的代码,现在它可以工作了。 但在不同的设备上有所不同。 例如:在 Redmi 2 上: Redmi 2 设备上的 IMG 在 Redmi7S 上: Redmi 7S 设备上的 IMG 在一加 7 Pro 上: 一加 7 Pro 设备上的 IMG 那么我该如何解决呢?

我不确定这是否是您正在寻找的,但我尝试过这种方式。

    EditText editText = findViewById(R.id.input_chat_message);

    DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
   // int height = displayMetrics.heightPixels;
    int width = displayMetrics.widthPixels;

   int editTextWidth = width - 200;
   editText.setLayoutParams(new LinearLayout.LayoutParams(editTextWidth,LinearLayout.LayoutParams.WRAP_CONTENT));

我希望它有所帮助。

编辑:在 xml 中,可以这样做。 我在这里为 LinearLayout 使用 android:weightSum 属性。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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">

    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/chat_list"
        android:layout_above="@id/private_chat_linear_layout"/>

    <LinearLayout
        android:weightSum="1"
        android:id="@+id/private_chat_linear_layout"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true">

        <EditText
            android:layout_weight=".74"
            android:id="@+id/input_chat_message"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:hint="Write your message"
            android:padding="0dp" />

        <ImageButton
            android:layout_weight=".13"
            android:id="@+id/send_message_button_chat"
            android:layout_width="0dp"
            android:layout_height="50dp"
            app:srcCompat="@drawable/send_message"
            tools:ignore="VectorDrawableCompat" />

        <ImageButton
            android:layout_weight=".13"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:id="@+id/send_file_button_chat"
            app:srcCompat="@drawable/share_file"/>

    </LinearLayout>

</RelativeLayout>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM