8

私はを持っておりGridView、各セルにはその下にImageViewwithTextViewがあります。残念ながら、TextViewに複数の行がある場合、テキストは切り捨てられます。私はすべてを試しましたが、解決策を見つけることができません。

のテキストの半分が表示されるため、の行の高さがGridView問題であり、実際のテキストではないようですTextview

これが私のコードです:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    GridView gridView = (GridView) findViewById(R.id.gridView1);
    gridView.setAdapter(new ImageAdapter());

    gridView.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> arg0, View v, int position, long id) {
            startActivity(new Intent(Main.this, Acronyms.class));
        }

    });
}

public class ImageAdapter extends BaseAdapter {

    private Integer[] iconImg = { 
            R.drawable.acronyms, R.drawable.acronyms,
            R.drawable.acronyms
    };
    private String[] iconTitle = {
            "Acronyms", "Cardiac Strips",
            "Test 3"
    };

    public int getCount() {
        return iconImg.length;
    }

    public Object getItem(int arg0) {
        return null;
    }

    public long getItemId(int arg0) {
        return 0;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View view = null;
        if (convertView == null) { 
            LayoutInflater inflater = getLayoutInflater();
            view = inflater.inflate(R.layout.icon, null);
            TextView textView = (TextView) view.findViewById(R.id.icon_text);
            textView.setText(iconTitle[position]);
            ImageView imageView = (ImageView) view.findViewById(R.id.icon_image);
            imageView.setImageResource(iconImg[position]);

        } else {
            view = convertView;
        }

        return view;
    }
}

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#a3e6ff"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:paddingBottom="10dp"
        android:paddingTop="10dp"
        android:shadowDx="0"
        android:shadowDy="0"
        android:shadowRadius="25"
        android:text="Example"
        android:textColor="#248fb7"
        android:textSize="40dp"
        android:typeface="serif" android:gravity="center_horizontal"/>

    <GridView
        android:id="@+id/gridView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:columnWidth="90dp"
        android:horizontalSpacing="10dp"
        android:numColumns="3"
        android:stretchMode="columnWidth"
        android:verticalSpacing="15dp" >
    </GridView>

</LinearLayout>

と私のicon.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/grid_icon_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/icon_image"
        android:layout_width="90dp"
        android:layout_height="wrap_content" />


    <TextView
        android:id="@+id/icon_text"
        android:layout_width="90dp"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:maxLines="2"
        android:singleLine="false"
        android:text="Samples Samples"
        android:textColor="#FFFFFF"
        android:textSize="15dp"
        android:typeface="serif" />

</LinearLayout>

そしてここにスクリーンショットがあります: 複数行のカットオフ

4

3 に答える 3

6

私はそれを定義するときに、を使用して解決しました

    TextView.setLines(2);

xmlでは、textviewは

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
于 2012-07-16T18:48:13.687 に答える
2

[編集1]

icon.xmlに線形レイアウトの代わりにRelativeLayoutを使用してみることができます。

これが機能しない場合は、静的な高さのTextViewに移動します。スクリーンショットを見ると、常に同じ画像を使用しているように見えます。テキストは1行または2行になります。テキストの高さを静的にして、2行になるようにします。

[オリジナル] 問題は、icon.xmlの線形レイアウト定義にあると思います。定義では、幅と高さのパラメーターとして「match_parent」を持つレイアウトがあります。これらは基本的にグリッドビュー内のサブビューであるため、「wrap_content」である必要があります。これが私が思うべきことです

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     
    android:id="@+id/grid_icon_layout"     
    android:layout_width="wrap_content"     
    android:layout_height="wrap_content"     
    android:gravity="center_horizontal"     
    android:orientation="vertical" >

    <ImageView android:id="@+id/icon_image"         
        android:layout_width="90dp"         
        android:layout_height="wrap_content" />       

    <TextView android:id="@+id/icon_text"         
        android:layout_width="90dp"         
        android:layout_height="wrap_content"         
        android:gravity="center_horizontal"         
        android:maxLines="2"         
        android:singleLine="false"         
        android:text="Samples Samples"         
        android:textColor="#FFFFFF"         
        android:textSize="15dp"         
        android:typeface="serif" />

</LinearLayout>
于 2012-06-27T14:50:24.923 に答える
0

LinearLayoutのConstraintLayoutを変更します。ConstraintLayoutを使用していることを確認し、可能であればLinearLayoutで変更してください。長いテキストの場合、制約はあまり良くありません。

于 2019-05-22T03:50:47.753 に答える