Java 更改膨胀布局中TextView的属性
我有一个列表视图,我想根据屏幕密度对其边距和填充进行动态更改,因此我需要用java而不是xml设置这些属性,我试图放大项目布局视图并获取其内部文本视图,但属性不变,以下是我的代码: 这是活动xmlJava 更改膨胀布局中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
<?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);