我有一个列表视图,其边距和填充我想根据屏幕密度改变,所以我需要在java而不是xml中设置这些属性,我试图给项目布局视图充气并获得它的内在TextView,但属性没有改变,这是我的代码:
这是活动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>
这是项目布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/list_selector">
<TextView
android:id="@+id/deviceId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textColor="@drawable/list_selector">
</TextView>
</LinearLayout>
这是我正在尝试的一段java代码
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));
TextView不会改变它的属性,我测试了很多其他的并且它保持不变
答案 0 :(得分:0)
这个怎么样?
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);
答案 1 :(得分:0)
您应该将它们放在密度特定的XML文件中,放在res/values-hdpi
等文件夹中,然后在布局XML中引用它们。