Java 更改膨胀布局中TextView的属性

Java 更改膨胀布局中TextView的属性,java,android,xml,android-layout,Java,Android,Xml,Android Layout,我有一个列表视图,我想根据屏幕密度对其边距和填充进行动态更改,因此我需要用java而不是xml设置这些属性,我试图放大项目布局视图并获取其内部文本视图,但属性不变,以下是我的代码: 这是活动xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://sche

我有一个列表视图,我想根据屏幕密度对其边距和填充进行动态更改,因此我需要用java而不是xml设置这些属性,我试图放大项目布局视图并获取其内部文本视图,但属性不变,以下是我的代码:

这是活动xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.onward.hemoapp.SearchDevicesActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="We've found the following devices:"
        android:id="@+id/devicesLabel"/>

    <ListView
        android:id="@layout/device_list"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:divider="@android:color/transparent"
        android:dividerHeight="20.0sp"
        android:layout_below="@+id/devicesLabel">

    </ListView>

</RelativeLayout>
TextView没有改变它的属性,我测试了许多其他属性,它仍然保持不变

这是怎么回事

LinearLayout deviceList=(LinearLayout)LayoutInflater.from(SearchDevicesActivity.this).inflate(R.layout.device_list, null);
TextView deviceId=(TextView) deviceList.findViewById(R.id.deviceId);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) deviceId.getLayoutParams();
params.setPadding((int) (20 * scale), (int)(15 * scale), 0, (int) (15 * scale))
deviceId.setLayoutParams(params);

你应该将它们放在密度特定的XML文件中,比如
res/values hdpi
等文件夹中,然后在布局XML中引用它们。

android提供了大量支持,支持使用XML的多屏幕,……XML的全部目的是将UI与代码分离,使事情变得简单,那是你的android,根本不存在
setContentView(R.layout.activity_search_devices);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
float scale=metrics.density;
devicesLabel=(TextView) findViewById(R.id.devicesLabel);
devicesLabel.setPadding((int) (20 * scale), (int) (15 * scale), 0, (int) (15 * scale));
devicesLabel.setTextSize(10 * scale);
LinearLayout deviceList=(LinearLayout)LayoutInflater.from(SearchDevicesActivity.this).inflate(R.layout.device_list, null);
TextView deviceId=(TextView) deviceList.findViewById(R.id.deviceId);
deviceId.setPadding((int) (20 * scale), (int)(15 * scale), 0, (int) (15 * scale));
LinearLayout deviceList=(LinearLayout)LayoutInflater.from(SearchDevicesActivity.this).inflate(R.layout.device_list, null);
TextView deviceId=(TextView) deviceList.findViewById(R.id.deviceId);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) deviceId.getLayoutParams();
params.setPadding((int) (20 * scale), (int)(15 * scale), 0, (int) (15 * scale))
deviceId.setLayoutParams(params);