Frage Ändern Sie die Breite des linearen Layouts in Android


Ich habe dieses XML-Layout für eine Listenansicht:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/menu"
android:orientation="vertical" android:background="#2f4f4f" android:layout_width="wrap_content" android:layout_height="fill_parent">

  <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:background="#2f4f4f" android:cacheColorHint="#2f4f4f" android:scrollbars="none">
  </ListView>
</LinearLayout>

Das lineare Layout belegt standardmäßig die gesamte Bildschirmbreite.

enter image description here

Ich will es programmatisch ändern. Ich möchte so etwas machen:

enter image description here

Aber wenn ich die Breite von linearlayout ändere passiert nichts, es nimmt immer noch volle Bildschirmbreite ein

 LayoutInflater inflater = LayoutInflater.from(this);
 View menu = inflater.inflate(R.layout.xml_layout, null);
 menu.setLayoutParams(new LayoutParams(20,LayoutParams.WRAP_CONTENT));

nach Hardcoding Layout Breite in der Listenansicht als:

 <ListView
  android:id="@+id/list"
  android:layout_width="200dp"
  android:layout_height="wrap_content"
  android:background="#2f4f4f"
  android:cacheColorHint="#2f4f4f"
  android:scrollbars="none" >

</ListView>

Ich verstehe das:

enter image description here

Bitte schlagen Sie einen Weg vor, dies zu tun.


5
2017-12-29 04:29


Ursprung


Antworten:


Änderungen in der Listenansicht vornehmen, wie unten gezeigt, Hard Code für die Layoutbreite in XML.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent"
android:layout_height="fill_parent" 
android:orientation="vertical" android:background="@android:color/white">


<ListView
    android:id="@+id/list"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:background="#2f4f4f"   >

</ListView>

</LinearLayout>

du hast gemacht Wrap_content im linearen Layout und in Listenansicht fill_parentdaher lineares Layout, das Listenansicht umhüllt, d. h. Vollbild.


4
2017-12-29 04:37



Wenn Sie möchten, dass es auf mehrere Bildschirmgrößen passt, würde ich vorschlagen, ein leeres Layout hinzuzufügen und Gewichte zu verwenden.

So was:

<?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="horizontal" android:background="@android:color/white">


<ListView
    android:id="@+id/list"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="3"
    android:background="#2f4f4f"   >

</ListView>

<LinearLayout android:layout_width="0dp"
android:layout_height="fill_parent" 
android:layout_weight="1"
android:orientation="horizontal" android:background="@android:color/white">

</LinearLayout>

Ich habe nur die Gewichte beobachtet. Passen Sie sie an die Breite an, die Sie benötigen. Wenn Sie es so machen, müssen Sie die Größe nicht für jede Bildschirmgröße fest codieren.


2
2017-12-29 06:49