Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动态调整Android Studio文本视图的大小_Java_Android_Xml_Dynamic - Fatal编程技术网

Java 动态调整Android Studio文本视图的大小

Java 动态调整Android Studio文本视图的大小,java,android,xml,dynamic,Java,Android,Xml,Dynamic,我正在尝试使用Java代码动态调整文本框的大小。我希望宽度不使用包装内容,而是在dp中使用静态数字。我希望这是在Java代码中完成的,而不是XML文件。我希望它是这样的,因为我想将它应用到recyclerview中的每个项目。它需要使用多个屏幕尺寸。它的工作原理类似于文本框大小的最小长度。如果您知道如何执行此操作,将非常方便。这称为自动调整大小,可以通过添加TextChangedListener来完成,它是编辑文本的侦听器。此侦听器监视editText的更改,并具有三种不同的状态。您还可以创建一

我正在尝试使用Java代码动态调整文本框的大小。我希望宽度不使用包装内容,而是在dp中使用静态数字。我希望这是在Java代码中完成的,而不是XML文件。我希望它是这样的,因为我想将它应用到recyclerview中的每个项目。它需要使用多个屏幕尺寸。它的工作原理类似于文本框大小的最小长度。如果您知道如何执行此操作,将非常方便。

这称为自动调整大小,可以通过添加TextChangedListener来完成,它是编辑文本的侦听器。此侦听器监视editText的更改,并具有三种不同的状态。您还可以创建一个组件(自定义视图),并根据需要从AppCompatTextView名称扩展它;在其初始化中,您可以添加以下代码:

public class CustomTextView extends AppCompatTextView {
Context ctx;

public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
ctx = context;
init();
}

public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
ctx = context;
init();
}

public CustomTextView(Context context) {
super(context);
ctx = context;
init();
}

  public void init() {
setOnTouchListener(null);
addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int  count) {
        if (getText().toString().length() > 10){
            setTextSize(TypedValue.COMPLEX_UNIT_SP, textSizeSmall);
        }
        else if (getText().toString().length() > 5){
            setTextSize(TypedValue.COMPLEX_UNIT_SP, textSizeMedium);
        }
    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});
}

此外,还可以查看这些文档,其中有一个文档提示:


我想这会对你有帮助

LinearLayout.LayoutParams textParam = new LinearLayout.LayoutParams
                    (LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f);

textView.setLayoutParams(textParam);

这回答了你的问题吗?